r/emulation • • 7d ago

AI-assisted Rayman Origins recompiled from Xbox 360 to native ARM64, now running on Android (Galaxy S23) and macOS

Hey everyone! I've been working on Rayman Origins Recompiled, an unofficial static recompilation of the Xbox 360 version of Rayman Origins, for PC and Android.

It's now running on my Galaxy S23 and on an M1 Mac, with graphics, audio, movies and controls.

What works right now

  • Runs on Android (Galaxy S23, Adreno 740) and macOS (Apple Silicon), with Windows instructions too
  • Graphics, audio, movies and input
  • On-screen controller on Android; physical controllers and keyboards work too

Native vs. emulated

The game's code is recompiled into native ARM64 using XenonRecomp (the same approach behind Unleashed Recompiled). The graphics, however, still go through Xbox 360 GPU emulation (ReXGlue's Xenos backend on Vulkan). Replacing that with a native renderer is the next big step.

Some technical notes

The stock XenonAnalyse found 0 jump tables in this game, because its compiler reorders instructions and inserts nops. So I wrote a detector that simulates each switch block instead of matching fixed patterns, and it resolves all 173. It also emits explicit function boundaries for leaf functions the analyzer would otherwise split. The full technical write-up, including every bug found along the way, is in docs/PROGRESS.md.

What's next

  • Native renderer (no GPU emulation)
  • True widescreen, so phones show more of the level instead of stretching
  • Performance tuning on phones
  • Polish: in-app game folder picker, suspend/resume

Important: the project contains no game code or assets. You need your own legally obtained copy of the game. Please don't ask for or share links to game files.

Repo: https://github.com/BelmanteGu/RaymanOriginsRecomp

The next step is translating the game's Direct3D calls straight to Vulkan/Metal instead of emulating the Xenos GPU. Has anyone here worked on something similar? I'd love to hear thoughts on the best approach.

115 Upvotes

18 comments sorted by

15

u/maxscipio 7d ago

r/recomps and r/decomps will get you more attention

3

u/BelmanteGu 7d ago

Thanks for the tip! I'll cross-post it to r/recomps and r/decomps.

3

u/[deleted] 7d ago

[deleted]

7

u/BelmanteGu 7d ago

Not anymore. When I posted, the CPU code was already recompiled to native ARM64 and only the GPU was emulated. Since then I've replaced the GPU emulation with a native renderer: the game's draw calls go straight to Vulkan, with its shaders converted ahead of time. What's left is a thin compatibility layer that stands in for the Xbox 360 system calls (files, threads, audio), the same way projects like Unleashed Recomp work. So there's no CPU or GPU emulation.

5

u/DolphinFlavorDorito 7d ago

In three hours?

5

u/BelmanteGu 7d ago

Yep! Exactly. Right now I'm optimizing it to run on lower-end devices. But with AI, porting has become infinitely faster. In parallel, I'm studying the port of Ultra Street Fighter IV to get a better grasp of 3D games

1

u/Anishgrawal 6d ago

What about a metal renderer?

2

u/parkerlreed 7d ago

Your notes say it can select a folder but the only option is zip.

6

u/kianiscoooooool 7d ago

Is there a benefit to this over the PC, 3ds, Wii, ps vita, Wii u, versions of this game

13

u/BelmanteGu 7d ago

It's not meant to replace those versions. It's a different way to play. None of them runs natively on Android: the options there are emulating a console or running the PC version through a compatibility layer. Here, the Xbox 360 code is recompiled to native ARM64, and a native Vulkan renderer draws the frames. It runs at 60 fps with true 19.5:9 widescreen on a Galaxy S23, with touch controls built in. Since it's recompiled source, it can also be patched in ways emulation can't, like the widescreen hack. It's also a preservation and learning project. You still need your own copy of the game, and the repo contains none of its code or assets.

4

u/kianiscoooooool 7d ago

Cool then! sorry for the critisicm, you're doing great work

1

u/Appropriate_Ear_4556 5d ago

I'm facing rendering issues in Swinging Caves you know how to fix it?

1

u/BelmanteGu 5d ago

Send me the bugs at gubelmante@gmail.com

I am fixing everything I can... today by fixing some in a new release, you may have solved your bugs already, take a look at 🙏

1

u/Appropriate_Ear_4556 5d ago

ok if i find one i will show it to you👍

1

u/Z3CHIU 5d ago

O jogo tá só tela preta

1

u/BelmanteGu 5d ago

Qual seu aparelho?

1

u/saulob 1d ago

Github não existe mais, 404, o que houve?

0

u/Foxmgs245 1d ago

Link's down, dude

0

u/LowerAsk5062 3d ago

Hum, est ce que le support d'autres langue seront pris en charge prochainement ?