It's the first time I hear about static recompilation. I didn't know you can recompile something to run on a different architecture and OS.
Unleashed Recompiled: PC port of the Xbox 360 version of Sonic Unleashed
21–27 of 27 posts
Re: Unleashed Recompiled: PC port of the Xbox 360 version of Sonic Unleashed
#22Earlier 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…
I dont think it is compiling anything here.
Re: Unleashed Recompiled: PC port of the Xbox 360 version of Sonic Unleashed
#23Re: Unleashed Recompiled: PC port of the Xbox 360 version of Sonic Unleashed
#24Every 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.
Re: Unleashed Recompiled: PC port of the Xbox 360 version of Sonic Unleashed
#25Earlier 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…
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
#26Re: Unleashed Recompiled: PC port of the Xbox 360 version of Sonic Unleashed
#27Earlier 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…