Live data from Hacker News

Unleashed Recompiled: PC port of the Xbox 360 version of Sonic Unleashed

github.com

21–27 of 27 posts

Re: Unleashed Recompiled: PC port of the Xbox 360 version of Sonic Unleashed

#22
post #9
post #6

Earlier quoted context omitted.

It's not emulation. It's recompiled to the target device's native machine code. It also required a lot of additional low-level, per game programming to make stuff like graphics and sound work correctly.

Traditional emulators also recompile games to the target device's native machine code. It just happens dynamically at runtime, hence the name "dynamic recompiler" or "Just In Time recompiler". This is just a static recompiler or ahead of time recompiler, except instead of directly targeting machine code, it's targeting C/C++ as a type of portable assembly. It basically just looks like a bunch of macros implementing t…

As I understand it, standard emulation is not dynamic recompiling or jit, it is emulating and converting system calls in realtime. So the game calls a system function unique to the original platform, the emulator sees that call and makes a similar one (or multiple) in the language of the emulating system, and then returns the correct response back to the original call from the game.

I dont think it is compiling anything here.

Re: Unleashed Recompiled: PC port of the Xbox 360 version of Sonic Unleashed

#23
Compared to the og recompiler https://github.com/rexdex/recompiler>, this is super basic and only matches patterns specific to a single compiler rather than devising a CFG as one would expect with such a tool. I wasn't able to analyze, let alone "recompile" even the basic "dolphin" demo.

Re: Unleashed Recompiled: PC port of the Xbox 360 version of Sonic Unleashed

#24

Every time MattKC uploads[0], his video's subject matter appears on HN a few hours later. I'm beginning to think it's not a coincidence :) [0]: https://www.youtube.com/watch?v=lMGu6Ng_3yA

In this case the post was made a few days ago, but didn't get the traction it arguably deserved so was given a second chance.

I'm not sure why this post was bumped. It was on the front page for quite a while on the day of posting.

Re: Unleashed Recompiled: PC port of the Xbox 360 version of Sonic Unleashed

#25
post #22
post #9

Earlier quoted context omitted.

Traditional emulators also recompile games to the target device's native machine code. It just happens dynamically at runtime, hence the name "dynamic recompiler" or "Just In Time recompiler". This is just a static recompiler or ahead of time recompiler, except instead of directly targeting machine code, it's targeting C/C++ as a type of portable assembly. It basically just looks like a bunch of macros implementing t…

As I understand it, standard emulation is not dynamic recompiling or jit, it is emulating and converting system calls in realtime. So the game calls a system function unique to the original platform, the emulator sees that call and makes a similar one (or multiple) in the language of the emulating system, and then returns the correct response back to the original call from the game. I dont think it is compiling anyth…

Your understanding is incorrect. Applications (games) written for older gaming consoles all had to ship some native code, and were even typically entirely native code. These consoles were also typically not x86 or x86-64 based, so for a PC-targeting emulator to run applications written for these platforms, they do need to have recompiler or interpreter facilities.

They also do not necessarily need to hook and replicate syscalls, provided the user provides a dump of the system software (they just run the system software and make it load the game - the original syscall codes are then ran).

This extends even to the graphics hardware side once programmable shaders became a thing.

Re: Unleashed Recompiled: PC port of the Xbox 360 version of Sonic Unleashed

#27
post #22

Earlier quoted context omitted.

As I understand it, standard emulation is not dynamic recompiling or jit, it is emulating and converting system calls in realtime. So the game calls a system function unique to the original platform, the emulator sees that call and makes a similar one (or multiple) in the language of the emulating system, and then returns the correct response back to the original call from the game. I dont think it is compiling anyth…

Your understanding is incorrect. Applications (games) written for older gaming consoles all had to ship some native code, and were even typically entirely native code. These consoles were also typically not x86 or x86-64 based, so for a PC-targeting emulator to run applications written for these platforms, they do need to have recompiler or interpreter facilities. They also do not necessarily need to hook and replica…

Thanks for the explanation
Post reply on HN