[HN Gopher] Significant progress made on Xbox 360 recompilation
___________________________________________________________________
Significant progress made on Xbox 360 recompilation
Author : tetrisgm
Score : 148 points
Date : 2026-03-29 12:53 UTC (5 days ago)
(HTM) web link (readonlymemo.com)
(TXT) w3m dump (readonlymemo.com)
| andrewstuart wrote:
| What is Xbox 360 recompilation?
| fwip wrote:
| You take a binary that's intended to run on the Xbox 360, and
| emit a new binary that runs on a modern x86 computer.
| MisterTea wrote:
| You take an Xbox game designed to run on an Xbox 360, a 64 bit
| PowerPC system and decompile its binaries back into source
| code. You now have the ability to modify the game as well as
| port it to other systems and architectures such as Windows on
| X86_64 or Linux on ARM64.
| kaladin-jasnah wrote:
| Seeing this [1], I thought it was something related to taking
| assembly instructions in the original code, emitting C
| statements that match the instruction, and then compiling
| that C code.
|
| [1] https://github.com/N64Recomp/N64Recomp
| bri3d wrote:
| Your idea is much more accurate; see my sibling comment.
| It's basically using C or C++ as an intermediate
| representation for machine code, rather than trying to
| recreate the game's higher-order logic/structure or source
| code.
| MisterTea wrote:
| Ah, you are right. I haven't looked at the details of the
| recomp efforts.
| bri3d wrote:
| It's more nuanced than that; the approach you're describing
| is usually called "decompilation."
|
| The difference is how far one goes in hoisting the "source
| code;" in this "recompliation" approach the source code,
| while C++, is basically an IR (intermediate representation)
| between the original game's assembly and a host platform, and
| the hardware itself is emulated (for example, the original
| architecture's CPU registers are represented as variables in
| the host architecture's memory). The machine code is
| translated to C++ using a custom tool.
|
| In a "decompilation" approach the game logic is converted
| (using a decompiler, like IDA or Ghidra's) back into
| something which resembles the original source code to the
| game itself, and the source code is usually hand analyzed,
| marked up, rewritten, and then ported across platforms. The
| product is something that attempts to resemble the original
| game's source code.
|
| Of course, they lie on a continuum and both approaches can be
| mixed, but, while they both involve C++ in the middle, the
| process is starkly different. Recompilation is much more
| copyright-friendly, because in many implementations only the
| modifications are distributed and the original binary is
| translated by the end user (who owns the software/a license
| to it), whereas decompilation produces an artifact (source
| code) which is a derivative work encumbered by the original
| software's license and generally should not be distributed.
| kombine wrote:
| > In a "decompilation" approach the game logic is converted
| (using a decompiler, like IDA or Ghidra's) back into
| something which resembles the original source code to the
| game itself, and the source code is usually hand analyzed,
| marked up, rewritten, and then ported across platforms
|
| There definitely is a lot of scope to apply LLMs here
| iscisjvije wrote:
| _no one_
|
| _absolutely no one_
|
| _not a single soul on this Earth_
|
| LLM nut: OMG LLM!!!!!!!
|
| Can't you just drop it, please?
| giancarlostoro wrote:
| The blog post reminds me of similar efforts with Shockwave.
| There's people building decompilers, and runtimes, and if you
| join enough Discords, you will notice the people in them are
| cross-contaminating between communities if you will, they share
| insights with one another, in their efforts towards specific
| goals. They're hyper focused on making one game or another come
| back. There's Habbo Hotel, and Coke Studios, as well as other
| games.
|
| The Coke Studios effort is interesting because there were no
| "private servers" developed at the time, unlike Habbo which had
| many, and there are Shockwave Xtras that no open runtime supports
| currently.
|
| There's several attempts at a full runtime as well, that run in-
| browser.
|
| Projector Rays (decompiler) really was the biggest release to
| date, and recently people have been really hacking at it, to some
| extent AI has helped to reverse engineer bytecode far as I can
| tell.
|
| For anyone curious, one of the runtimes is called DirPlayer:
|
| https://github.com/igorlira/dirplayer-rs
| YesBox wrote:
| Where can I boot up Coke Studios? Enjoyed that game as a kid,
| including making music (which was so friggen cool! They had
| tons of samples you could just drag and drop into a timeline).
|
| Edit: fun memory. I figured out how scamming works at some
| point. IIRC (and I may not) I set up a minigame in my studio,
| and contestants had to give me their furniture to participate
| in a game. Since furniture could stack weirdly, people made all
| sorts of crazy mazes that were actually quite difficult to
| navigate due to the fixed isometric perspective.
|
| Each stage required handing over a more expensive item than the
| last. At some point someone handed over a super rare/expensive
| piece of furniture.
|
| Not gonna erase that. ACTUALLY I think I figured out how to
| clone items due to a bug. Or mine infinite DBs. Used that as
| cover to get someone to give me their item. Was a long time
| ago.
|
| Anyways, a user handed me their super rare item and I then gave
| them a stern warning on how this is a common scam and I just
| stole their item(s). Then I handed everything back over to them
| and they profusely thanked me. lol
| Aurornis wrote:
| I have a lot of respect for little communities where people
| gather to work obsessively over a goal like this. It's fun to
| see projects like this that would never see this much effort
| applied if not for the passion of a few dedicated people.
|
| Many of the smartest people I've known got their starts in
| little communities like these: Obsessively learning new things
| that would normally be beyond their academic or career level
| because they need to know something advanced to move their
| passion project forward.
| giancarlostoro wrote:
| Its what started me on the path of my career really.
| Understanding how systems work. I still enjoy finding cheats
| in offline games for myself just to see how far I can push
| game engines.
| Cthulhu_ wrote:
| I'm indirectly involved / hear about a project that buys up old
| feature phones, mainly from Japan, to try and find ones that
| have data for old imode games on them, notably a FFVII spinoff
| called Before Crisis. It's difficult because they would release
| the game in separate data packs, the idea being people can
| remove data packs for parts of the game they already played to
| save space (also a feature on modern smartphone games). But
| since the servers are long gone, they need to find phones with
| the data on them to extract it.
|
| But they've made really good progress in recent years, to the
| point that the game is now playable. Not sure if it's complete,
| but it's playable. See e.g.
| https://www.oldschoolgamermagazine.com/work-begins-on-restor...
| for info.
| triangleman wrote:
| What's the latest on homebrewing on the actual Xbox 360 these
| days?
| opan wrote:
| You can play game backups, use unofficial HDDs at bigger sizes,
| send over new games with FTP, use third party and DIY
| controllers like GuliKit's offerings or a Flatbox leverless
| arcade controller. You can play a modded version of Rock Band 3
| with all the songs from all the games, using a Wii Guitar Hero
| controller with a Pi Pico-based adapter in place of the
| Wiimote. Any game you installed from disc for faster load times
| becomes playable without the disc in automatically once you get
| Aurora running (this is pretty cool, on some other modded
| consoles like PS4 you'd have to reinstall the games another
| way).
|
| As far as homebrew in the sense of people making their own
| games and applications, I don't know that there's much going
| on. Maybe you can find a controller tester app. Sadly the 360
| scene has a lot of proprietary stuff going on, and uses some
| official dev SDKs, IIRC. Where 3DS and Switch modders have
| everything on GitHub and freely licensed, 360 has a lot of
| binary-only releases on random forums and such. It would
| probably be a major effort to change this and involve rewriting
| stuff people already know and love.
|
| I did the the RGH 3 mod to half a dozen or so 360s a few years
| back for myself and friends. If you just wanna play games with
| modern comforts, things are in a pretty good state. We don't
| need to worry about the original disc drives, HDDs, or
| controllers wearing out and making the console useless, we can
| replace or avoid them all. The wireless card is also easily
| replaceable, a friend of mine had one that seemed non-
| functional after he spilled some Mtn Dew all over his 360 back
| in the day. Everything else seemed good after a clean but I
| just got him a new wireless card off eBay and swapped that out.
|
| If anyone wants to get into this and doesn't already have a
| 360, the S models are easiest to mod and most reliable (no
| RRoD). Some are Trinity and some are Corona motherboards
| inside, but both are hackable. Corona may need a post-fix
| adapter, but they're cheap and easy to install. Just avoid the
| E series.
|
| For modding tutorials, MrMario2011 on YT is great.
|
| There is also a software-only exploit that's a bit worse but
| more accessible. It came out after I already did all my
| modding, so I haven't got experience with it.
| asdff wrote:
| Crazy that it has taken so long. I understand these are small
| teams trudging off in the dark but you could have imagined there
| would have been more eyes on this and hands tinkering in the time
| when the Xbox 360 was being sold than today. Right at that same
| time in history the iPhone was getting cracked basically every
| iOS release, sometimes by teenagers. Seems like there were a ton
| of hackers around back then.
| wmf wrote:
| Most people just want emulation which was solved a while ago.
| Recompilation is mostly for modders which is a very small
| community.
| tetrisgm wrote:
| The whole decomp and recomp scene has really started popping
| off this past year in the emulation community. The N64 recomp
| tool was the first one to really get interest going.
| Venn1 wrote:
| These projects are really neat. Last week, I was able to build
| (and play) the Xbox 360 release of Sonic Unleashed on a couple of
| ARM SBCs using Sonic Unleashed Recomp.
| wesfenlon wrote:
| Hey, that's my newsletter -- thanks for sharing! :D
|
| Some exciting stuff has already happened in the week since I
| wrote the interview. Here's Viva Pinata: Trouble in Paradise:
| https://www.youtube.com/watch?v=Kih42KlocII
| tetrisgm wrote:
| Was playing that last night. So many great recomps lately. Ty
| for the newsletter
| testing22321 wrote:
| How does the static recompiler handle self modifying code?
| tetrisgm wrote:
| btw any way to reach out to you (twitter, discord?). big fan of
| your blog. I'd say on par with Time Extension!
| rendaw wrote:
| Years ago I was searching for why emulators don't recompile to
| native bytecode and it seemed like the consensus at the time was
| that JIT etc was faster. I can't find it now, but IIRC I remember
| replies from maintainers saying it was a bad idea.
|
| What changed since then, since this seems to be a trend? Is this
| more for more modern systems that have more static code?
| tetrisgm wrote:
| It's a combination of things. The floodgates were opened when
| the N64 recompiler popped up a couple (?) of years back. Really
| got interest going.
|
| I also think tooling got better, and with the advent of AI
| engineering it made all of this a lot more accessible.
| CJefferson wrote:
| Static code. Also, very fine details of the machine because
| less important.
|
| When emulating a NES (for example), you really have to emulate
| every register, how registers change, and also weird effects
| like instructions that take longer to read or write values, as
| games rely on that stuff. Once you have modern systems where
| much of the code was originally C, it becomes less important to
| ensure every register has exactly the right values when a
| subroutine finishes in most cases, you can rely that (most) of
| the code follows standard calling conventions.
| charcircuit wrote:
| You really don't. Most of the time the code will be doing
| normal things. So you can have other code that also does the
| same thing.
|
| >and also weird effects like instructions that take longer to
| read or write values
|
| The percentage of a code in the ROM that depends on such
| things is a small percent.
| ErroneousBosh wrote:
| It depends on the platform you're targeting.
|
| Something like a SNES will always have the same hardware no
| matter what (okay, leave out the expansion chips inside
| cartridges, or fold them into "same hardware").
|
| Something like a PC will have any old random shite you care to
| plug into it.
|
| Something like an Xbox 360 is kind of halfway between.
|
| With a SNES you can rely on the fact that a vertical blanking
| interrupt will happen 50 times a second no matter what, and you
| get so many instructions before your video output is halfway
| down the screen no matter what, and then if you want to play
| silly games like changing a PPU register to dick about with the
| screen mode you can. You have to take into account things like
| it taking more time for certain types of memory access like if
| you cross a 256-byte page boundary, but since when you get down
| this far you're doing it all in assembler you can place your
| code and data exactly where you want to get exactly the
| behaviour you want.
|
| When you emulate this, you must emulate every aspect of this
| behaviour correctly or things will fall apart. Think about
| things like the "open bus bugs" that trip up emulation - some
| games rely on silly tricks like expecting the capacitance on
| the pins of the chips to hold a value like a crazy single-byte
| DRAM for a moment while they look somewhere else. If your
| emulator just goes "okay no devices are enabled so the bus is
| simply pulled high to 0xff" that will fail.
|
| With a PC you've got a wider variety of hardware, and a deeper
| level of abstraction. You don't have to care about flipping
| registers at just the right time, you just throw some textures
| and polygons at the GPU and let it do its thing. It'll tell you
| when it's ready for more. This is why you get the same
| experience between your AMD GPU, your NVidia GPU, your Intel
| GPU, and hell why not just have software OpenGL too (because
| it's slow but that's how we used to do it in the olden days).
|
| So if you wanted to run a SNES game on modern hardware you'd be
| better off emulating the hardware directly, bugs and all, and
| then running the "real" game binary.
|
| But if you wanted to run something like an Xbox 360 game -
| written using "modern" development techniques, where a lot of
| the hardware is abstracted away behind drivers and libraries -
| you might well just break it down into functional blocks of
| code, rewrite them for your native CPU, and shim the calls to
| the libraries to talk to the ones you have on your native
| system.
|
| A bit of code that rotates a set of vertices and flings them at
| the GPU will look pretty much the same in C on any platform,
| but it'll compile to very different assembly language. That's
| okay though! If you understand how the instructions relate to
| the data you can just kind of translate one set of opcodes to
| another and expect it to be more-or-less right. You can even
| (kind of) do this automatically!
| cosmic_cheese wrote:
| Very nice. It'd be interesting if recomps of some games that were
| originally for both 360 and PC become the superior experience...
| Fable 3 and the whole Games for Windows Live nonsense the PC
| version had come to mind.
| zxspectrum1982 wrote:
| I wonder whether this "recompilation" technology could be used to
| run Windows software on Linux, as an alternative/complementary
| technique to Wine.
|
| Back in the day (year 2000, until 10-15 years ago) we had Project
| Odin to dynamically translate Windows software to run on OS/2:
| https://github.com/netlabsorg/odin32
___________________________________________________________________
(page generated 2026-04-03 23:02 UTC)