I wrote a blog post on the current trend of game decompilations using AI and where we're going with this. It's all very promising but oh boy are the implications scary.

top 50 comments

sorted by: hot top controversial new old
[–] 2 points 6 days ago

Pretty sure "decompiling" has always been the easy step - open the binary with a hex editor and dump the contents as some source code. Making sense of that is where shit gets really difficult - making it work was usually even harder.

  • source
  • [–] 153 points 1 week ago (23 children)

    The compiler was never meant to be a source code obfuscating tool anyway, the real sea change is Copyright being ignored. I've always wanted Copyright to go away, but it's going away in a way different than anything I'd imagined and I don't know what to think about that.

    The obvious upside is we can sort of return to a time when every game was openly moddable. 25 years ago almost every hot game was a mod of another game.

  • source
  • hideshow 23 child comments
  • [–] 64 points 1 week ago (7 children)

    It's not really copyright that you want to go away. It's corporations exploiting the work of individuals. There are countries that have much saner, a lot more ethical laws around it.

    The AI issue here is their theft, and since the theft is not addressed, it's going to get ugly, and the big game producers will just lock games behind networks , so unless you're online and likely paying a subscription, you ain't gonna be pLaying thaT game.

  • source
  • parent
  • hideshow 7 child comments
  • load more comments (7 replies)
  • [–] 16 points 1 week ago (2 children)

    I appreciate that at least we are all reeling from the implications of it all.

    I think that's a very interesting point about the compiler, companies have really leaned on that as a way to obfuscate code, some folks seem to think compiled is as good as encrypted? Just another lock on the door, I guess, and a free one at that.

    I think it does make a ton of sense that an llm would be so capable at decompiling code... it's basically just translating? But having decompiled some stuff myself years ago, it's still sort of amazing to see such a tedious process automated.

    Bleh, too many conflicting feelings... yes, let's hope we reclaim some bits of culture taken from us! And let's cross our fingers that copyright is destroyed in a manner that actually benefits people....

  • source
  • parent
  • hideshow 2 child comments
  • [–] 9 points 1 week ago

    I think that’s a very interesting point about the compiler, companies have really leaned on that as a way to obfuscate code, some folks seem to think compiled is as good as encrypted? Just another lock on the door, I guess, and a free one at that.

    Well, (depending on the language) compilation is a 100% lossy conversion. So when a game gets 'decompiled' with an LLM like this, they're not restoring the original code. It's just generating new code with the same behavior, which is functionally the same. People doing this generally wasn't considered infringement, but it's clear that having a machine automate it is a big problem. Even if we ignore the fact that the output of an LLM is legally tainted/grey area, the scale at which it can happen now means we need new laws to deal with it.

    This is basically doing to software what the internet did to piracy. That led to the DMCA, which as shitty and corrupt as it is, at least succeeds at some of its main goals.

  • source
  • parent
  • load more comments (1 reply)
  • load more comments (9 replies)
    [–] 47 points 1 week ago (2 children)

    It's not LLM decompilation is LLM de-obfuscation

    We have been able to de-compile pretty much anything for alomg while now, what's been harder is making sense of what comes out of it.

  • source
  • hideshow 2 child comments
  • [–] 28 points 1 week ago

    this right here.

    the adobe suite re-release is a much bigger deal than just pirated software. it's the first time we commoners have been able to use the models they trained with our stolen content to steal something back, and it's glorious.

  • source
  • parent
  • [–] 39 points 1 week ago (5 children)

    Automatic Ai driven recompilation is not the same as manual user effort to decompile, document and build a human understandable and good source code. That's why I do not mix up the terms recompilation and decompilation.

  • source
  • hideshow 5 child comments
  • [–] 9 points 1 week ago (4 children)

    I've been trying to understand the terms and the opening graphic on this site did a good breakdown.

    So my understanding is that a decomp or decompilation is turning the machine code into something human readable. It's the first step but technically isn't anything the average person can use because it still needs to then be (re)compiled into a game someone can run.

    However the term "decomp" in general usage refers to the human readable middle step, AND a way to create something for the average person.

    Versus a recomp or recompilation is performing the conversion of machine code to some middle state, then immediately (re)compiling it into a game the average person can run.

    However the term "recomp" in general usage refers to the same, but always with the use of AI.

    Is that right?

  • source
  • parent
  • hideshow 4 child comments
  • [–] 18 points 1 week ago (1 child)

    I think you/that article are overthinking it. Compiling just means turning source code (written/readable by humans) into machine code (aka a program/game). "Decompiling" is the reverse of that, where you turn machine code into source code.

    A lot of these AI de/re/comp/port/whatever projects are made by script kiddies/morons who don't know what they're doing. Sometimes you see them claim that a project is a "static recompilation", but when you look at the code it's literally just a bespoke emulator that runs the game.

    Which is to say, don't get too hung up on these terms, since they're often misused either way.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 9 points 1 week ago* (last edited 1 week ago) (1 child)

    It's important to understand that these terms are not standardized and people or organizations may use them slightly differently or interchangeably. This can cause confusion. But in the wild, people have come to use these terms (in my experience, I'm not an expert either) in specific ways. The article you linked seems to do a pretty good job, but we should remember that this is his/her personal interpretation. From your explanation, I would say it sounds about right "in my opinion".

    I lost it and put this lengthy reply. Sorry about that. Edit: Some parts are still not good explained, I tried.

    Source code and compiled binary

    First, it is important to understand the two states of a game: source code and compiled binary. The source code is text form written in a programming language (usually by and for humans), with other source material. If you download source code, its just bunch of text files basically. To play the game, one need to use a compiler that compiles or transforms the text files into machine readable compiled binary files. There are other stuff too, but this is the important part. The game can now be run and played on the platform it was built for, such as Super Nintendo. If you create a backup of the Super Nintendo cartridge that holds the compiled binary, then you get a ROM file basically. And on your PC you can't run the Super Nintendo games without emulating the hardware.

    Assembly

    Every CPU has a set of codes and functions, the very basic at the lowest level possible. Assembly is basically that, it is basically the native language the CPU understands. If you code in Assembly, then it is for this specific CPU architectur, such as Super Nintendo. But the CPU only can understand zeros and ones. So you have to translate the Assembly into real machine code, but the logic does not change anymore. So Assembly is machine code, just wrapped up in a better human readable form. This is usually not the source code. Source code is compiled into Assembly and then machine code binary. You can think of Assembly as machine code for humans, if that makes sense.

    Reverse Step 1: Disassembly

    Disassembly is taking the compiled final binary (such as ROM files in example) and does just translate all the zeros and ones into human readable machine code. But the original variables names and such are lost, so that its hard to understand what this even is due to optimizations by the compiler. Humans have to go through each line and machine code (which is represented in Assembly format) and figure out what each of the lines, commands do, rename each function and so on. This is painful work. What you get is Assembly code that is readable by humans.

    When you compile a fully reverse engineered Assembly code, you get the exact same ROM or machine code that you just disassembled. It didn't change the code, it just renamed stuff basically. So it will just compile to what it was programmed to.

    Reverse Step 2: Decompilation

    Now that you have something humans can read and reason about their logic, it's time to write some real and original source code. That means trying to understand the parts in Assembly, then writing in (in example C or Rust language) a language that can be compiled to any other target than the original machine code was intended. This new code is an approximation of what the original source code of the game developers were, but we don't know.

    Now this process is painful and slow. And in the end it does not mean the code will compile to other platforms, it still aims to produce the original game logic for the original hardware (such as Super Nintendo). So they need to make adjustments to the source code, which is finally easy to work with.

    Reverse Step 3: Port

    Now that you have an easy readable source code in a programming language that is independent from the hardware, such as C or Rust, you can make adjustments. If you aim to play the game on PC, then adjustments are done so it can compile on PC. Whatever is needed, but in short they modify the source code to be able to compile it to other platforms than it was originally intended. That's a port.

    What is a recompilation?

    In context of this discussion, a Recomp is basically taking the binary of the game and automatically built a source code file (such as to C or Rust) in one step. This leaves out the manual work of humans to categorize, understand and write good human readable code. The produced code from recompilation is meant to be used by compilers only, that compile to binary. It is not intended to be read by humans, even though its technically source code. Disadvantage is, that if there are bugs then humans have a hard time figure out whats going on. Or to mod the game manually, its difficult too.

    This is nowadays often associated with Ai tools, but doesn't have to. I'm not entirely sure, but the N64Recomp in example is such a non Ai recomp tool.

    In general, the best case is that we have good high quality human readable and understood source code; Decompilation. On the other hand Recompilation is much faster to create.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 28 points 1 week ago

    how you can copy code with AI and claim it's made in a clean room, so technically you're not under any licensing agreements.

    I argue if you use Ai to code, then you cannot proof that it was implemented in a clean room way.

  • source
  • [–] 26 points 1 week ago (2 children)

    I don't think that's actually true. I think it's more just AI propaganda. Most of the so-called "advances" that I've seen advertised seem to be far less than they seem when you dig deeper, often relying heavily on previous, human reverse-engineering efforts or simply being injection points built into wrappers for the actual binary game code. It's just suddenly cool and polished looking because AI padded it out with a bunch of fragile and flaky filler code whose only purpose is to make it look finished and beautiful at first glance when it actually isn't. The typical AI gameplan, in other words.

  • source
  • hideshow 2 child comments
  • load more comments (2 replies)
    [–] 21 points 1 week ago (1 child)

    Can we please just skip the middle-man and start open sourcing everything instead of burning all the world's resources to achieve the same goal?

  • source
  • hideshow 1 child comment
  • [–] 16 points 1 week ago (1 child)

    Oof I got a lot of conflicting thoughts on this. Going to need another coffee to mull this one over.

  • source
  • hideshow 1 child comment
  • load more comments (1 reply)
    [–] 14 points 1 week ago (4 children)

    Can it decompile windows and make it Linux

  • source
  • hideshow 4 child comments
  • [–] 1 point 6 days ago (1 child)
  • [–] 1 point 6 days ago*

    Imagine decompiling windows and merging it with Linux so that anything you wanna do on either platform somehow works native? Like if I do a fresh install of WINUX let's call it and then I can run any .exe and any game or program that's windows only and it automatically out of the box thinks it's a Windows machine and anything that's Linux only think it's a Linux box

  • source
  • parent
  • load more comments (2 replies)
    [–] 13 points 1 week ago (7 children)

    What's is the token cost to decompile one of these games? I want to fix a game breaking 'bug' in an old game are we talking $10s or $100s to make that happen?

  • source
  • hideshow 7 child comments
  • load more comments (7 replies)
    [–] 13 points 1 week ago (21 children)

    There is noting awesome about what AI does.

  • source
  • hideshow 21 child comments
  • load more comments (14 replies)
    [–] 12 points 1 week ago (2 children)

    I know a few games that are sorely out of date by active developers and the devs are always like "I don't have time" or "It's not that important" or "It's too hard."

    And I'm like, why don't you release the code you prick, you don't care, so why are you still lording over it.

    So this could be awesome.

  • source
  • hideshow 2 child comments
  • load more comments (1 reply)
    [–] 11 points 1 week ago (1 child)

    Another exciting area is open firmware synths. specifically the $70 fm-1 (I think Pi based) is blowing up with synth engines/groove box apps. Its exciting new area for OSS. Its scary for closed synths.

  • source
  • hideshow 1 child comment
  • load more comments (1 reply)
    [–] 11 points 1 week ago*

    Not scary at all for open source games! Or open source software. What, AI os going to decompile linux and 1000 AD?

  • source
  • [–] 10 points 1 week ago

    They already decompiled indiegames demo and used that to build a clone of it and ship it, faster than the indie dev can finish their game. It's definitely an awful situation for small indie dev because they not only have to compete with bigger budget, their peers, and the f2p market, now they have to compete with cloners

  • source
  • [–] 10 points 1 week ago (2 children)

    I've been thinking about this a lot too, because of seeing all these decompilations (with all the implications that comes with, as you point out some of them), but also because my own "learning LLM tooling" project was reverse engineering Civ IV, and rereleasing in a 64 bit engine with more accessible controls at the expense of 3d (sort of like Unciv).

    I did not do a decompilation, especially because the core of the game has restrictive-licensed source released, but i was able to build clean specs from that source, and then with as clean of context of possible, stage the production and testing of features. I honestly don't know how you'd prove a classic clean room implementation with LLMs (and definitely not in a one shot), and i can't really prove my implementation is clean either.

    I really hate the direction of all this stuff (so so much), and i hate that my disabled ass feels compelled to learn such tools so I am able to feed myself. But I did try to have some good come out of it (generic reverse engineered specs, basic accessibility framework, game automation framework, and i definitely learned a lot, plus it does work pretty ok)

    I haven't been able to figure out a way to release in a way that fits my ethical framework, without also resulting in people insulting me (which I don't have a lot of room for in my life right now). I'll happily take suggestions though!

    I'd love for this to not be wasted effort, especially because of the accessibility enhancements for a beloved but proprietary game.

  • source
  • hideshow 2 child comments
  • load more comments (2 replies)
    [–] 10 points 1 week ago (5 children)

    Are these AI decompiled games any good? I heard the Adobe ones looked good but we're actually really slow and buggy

  • source
  • hideshow 5 child comments
  • load more comments (5 replies)
    [–] 9 points 1 week ago (9 children)

    This is very conflicting.

    I daily a macbook, and so games aren't that readily available. To be able to play something like the original Syndicate (1993, SNES and other platforms) or Shadow Hearts: Covenant (2004, PlayStation 2) on my mac would be awesome. I'm very much a patient gamer, so there are so many old titles I'd very, very happily play through again.

    But there's no way this would be restricted to old, dead platform games.

    AAA games now cost millions or even, according to GTA 6 rumours, over a billion to make. If a studio publishes a game, and a week later there's a free AI clone of it, then there is no more AAA games industry. Actually, that also follows for some of the awesome indie games I've loved and enjoyed. How can you make money selling copies of your game if there's a free, or massively undercut, version of it available? Obviously most gamers would like to support creators, but in this economy? They'd probably rather eat and pirate games.

    Pirate.

    P-AI-rate?

    Pir-AI-te?

  • source
  • hideshow 9 child comments
  • load more comments (7 replies)
    [–] 9 points 1 week ago

    Maybe open source licenses are completely unenforceable now. Maybe critical software and hardware can be easily hacked into now, and we haven't realized just how bad it is yet. Maybe everything will have more invasive DRM on it soon. Who knows. We're about to find out in the next few months.

    Oh my god, anything but DRM. It freaking sucks and only ruins experience to normal users

    As some else discussed, apps where most infrastructure is on the server just for the sake to protect code might be popular. Which means even more reliance on the internet.

  • source
  • load more comments
    view more: next ›