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
[–] 46 points 4 days 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 4 days 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
  • [–] 153 points 5 days ago (22 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 22 child comments
  • [–] 63 points 5 days 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)
  • [–] 36 points 5 days ago (2 children)

    Copyright is going away in a way that only benefits AI companies. WE still get burned at the stake for downloading shit from limewire even if we're training our own AI models.

  • source
  • parent
  • hideshow 2 child comments
  • load more comments (1 reply)
  • [–] 16 points 5 days 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 5 days 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 (8 replies)
    [–] 20 points 4 days 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
  • [–] 12 points 4 days 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
  • [–] 4 points 4 days ago

    Lol sounds like some of our internal teams.

    They don't have time to support the things they built or to have people help them build it, but they refuse to make the repo internal so that others in the org can help them with it. Instead, they just act like bottlenecks.

  • source
  • parent
  • [–] 39 points 5 days 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 5 days 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 5 days 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 5 days ago* (last edited 5 days 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
  • [–] 27 points 5 days 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
  • [–] 14 points 4 days ago (4 children)

    Can it decompile windows and make it Linux

  • source
  • hideshow 4 child comments
  • load more comments (4 replies)
    [–] 11 points 4 days 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
  • [–] 3 points 3 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
  • [–] 26 points 5 days 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)
    [–] 11 points 4 days ago*

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

  • source
  • [–] 9 points 4 days 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
  • [–] 4 points 4 days ago

    It means one of two likely pivots if you ask me: the resurgence of highly locked down consoles with hardware protecting the data, or - and this is the most likely path - devs will just resort to making online only games, where lots of the content is streamed in while playing (I mean assets, not the display output - though don't doubt the latter, if it ever becomes feasible enough I'd posit that devs would migrate to that as well).

    Think a "live-events" driven game where every pre-determined period of time you download the assets for that period.

    Fortnite-ification of gaming, basically. :(

  • source
  • parent
  • load more comments (6 replies)
    [–] 12 points 5 days 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
  • [–] 6 points 4 days ago (3 children)

    Given it’s a game from 2004, it should be relatively easy to decompile, so if you’re the kind of person happy to tinker - it could be a great project to self-host and try to get done yourself?

    That way the only cost is time, and a little bit of electricity.

    I only just looked up some of the basic requirements, as it’s piqued my interest in trying to decompile something myself over the Christmas break!

  • source
  • parent
  • hideshow 3 child comments
  • [–] 5 points 4 days ago (2 children)

    Will read up on everything. I got a 9B model running, anything else was dog slow or didn't run, even on a 16GB card (AMD though)

  • source
  • parent
  • hideshow 2 child comments
  • load more comments (3 replies)
    [–] 9 points 4 days 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
  • [–] [S] 8 points 4 days ago* (4 children)

    Most of them are really good. The Adobe ones aren't actually decompilations, they're just AI-generated apps that try to copy the same functionality which is why they're so buggy and unfinished. The AI decomps/recomps should be functionally the same as the original games, usually with some edits to uncap the framerate and make it work with higher resolutions.

  • source
  • parent
  • hideshow 4 child comments
  • load more comments (4 replies)
  • [–] 10 points 5 days 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
  • [–] 16 points 5 days 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)
    [–] 13 points 5 days ago (21 children)

    There is noting awesome about what AI does.

  • source
  • hideshow 21 child comments
  • load more comments (14 replies)
    load more comments
    view more: next ›