By using this site, you agree to our Privacy Policy and our Terms of Use. Close

Forums - Microsoft - Microsoft Researching an Xbox 360 Emulator for the Xbox One.

torok said:

People are with the wrong focus. CPU isn't the big problem. X360 CPU isn't much different of a Wii CPU in steroids with multiple cores. Problem is GPU. Wii uses a simple fixed function GPU that has all the functions implemented on hardware in a pretty predictable way. That's why lightning on the Wii is bland, because it has only one algorithm to do it and it is hardcoded. 360 GPU is programmable. Lightning is done with shaders so it can apply different lightning algorithms to any material. It's complex. This is what makes emulating any console after PS360 another level of challenge.

Yes.  It's impossible to emulate the Xbox 360's DX9 compatible ATI GPU in the Xbox One's DX12 compatible AMD GPU.  No way to do that one. 

 





Around the Network
Adinnieken said:
torok said:

People are with the wrong focus. CPU isn't the big problem. X360 CPU isn't much different of a Wii CPU in steroids with multiple cores. Problem is GPU. Wii uses a simple fixed function GPU that has all the functions implemented on hardware in a pretty predictable way. That's why lightning on the Wii is bland, because it has only one algorithm to do it and it is hardcoded. 360 GPU is programmable. Lightning is done with shaders so it can apply different lightning algorithms to any material. It's complex. This is what makes emulating any console after PS360 another level of challenge.

Yes.  It's impossible to emulate the Xbox 360's DX9 compatible ATI GPU in the Xbox One's DX12 compatible AMD GPU.  No way to do that one. 


Challenge is different from impossible. If it wasn't a challenge, they would already have included it on XB1. Point is that the GPU is more complex when developing an emulator since it changed a lot and became more complex last gen, while the PPC architecture basically remained the same. People are concentrated on the issue of getting a PPC program running on X86, and that isn't such a big issue (Apple did it with Rosetta to run PPC Mac apps on the Intel Macs when they changed architectures). The GPU is a nwer thing and it will demand more work. It's not impossible. Maybe it's not practical by performance reasons, but not impossible.

It is possible to emulate anything if you have a hardware/software capable of doing everything the other did. Making it fast enough is a different history. You could emulate X1 on 360 if you wanted, simply implementing any new resource on X1 using software on 360. Slow as offline rendering, but possible.



Adinnieken said:

WinE originally meant Windows Emulator.

What you're calling translation isn't translation.  Translation is taking C++ and converting it into C# or VB#.  Windows calls aren't a language.  Nor are Linux calls. 

Every computer language is meaningless to a computer other than binary.  From Assembly on up to Javascript is simply a computer coding language intended to make programming easier for programmers.  If I open a file in Basic, C++, or Perl, I'm issuing essentially the same commands in Binary.  I'm just using an easier language to do so.   Where as it may take 3,000 lines of code to open a file in binary, it may only take four in VB or two in C.

So when an application makes a call to the OS to open a file, such as Word may do in Windows, the programmer makes a reference to a C Lib to open the file and pass it onto the application, where then the application does more with it.  That call to the OS that the application makes is the same in Windows as it is on Linux.  Now to save a file, the OS may do something different.  Maybe when the file is saved the application gives the user the ability to associate a unique icon with the file (as Word does), this may require a call to another file.  In order for WinE to emulate that or handle that call gracefully, they would need to emulate that call OR gracefully error out.       

While WinE doesn't have access to original source code to understand every hook and relied upon reverse engineering to identify the calls to the OS that applications were making, it is still an emulator.  What you're calling translation is actually what happens when you emulate a system.  You take a call that an application makes, then you emulate that call on a facimile of it.  Most of the time people are emulating (virtualizing) the hardware in software, WinE is simply emulating a portion of an OS functionality.     

Where WinE differs from a true emulator is that it doesn't emulate the entirety of Windows or even the hardware.    It is an application layer that emulates Windows calls.  Much in the same way that Windows NT itself could run POSIX and OS/2 applications, or OS/2 could run Windows 3.1 applications.  They're application layers that emulate a different OS.  

I would encourage you to educate yourself.  Emulation is a subset of virtualization.  They are almost synonmous.   


Assembly is basically binary. It's machine code, the words are just mnemonic references. Let's take ADD 101, 110. The ADD instruction may be represented by the binary 10 in that architecture, so the machine will have 10, 101 and 110 and it know that the first is the code for the instruction and the next two are values, registers or memory positions. So yes, it's the lowest you can go and words are just a mnemonic so you don't have to remember number sequences. You will use the exact same number of instructions in binary that you will in Assenbly because it is the same thing, it's 1:1. Using C or any other language, the relation between language calls and the real machine calls could bebe 1:1 for somethings, 2000:1 for others and so on. What Wine will do is get the machine language, detect sets of calls that make something meaninful together, find what is does and try to translate to what works in another OS, wich was made using reverse engineering (something that MS wouldn't need for 360/X1 since they have the full specs and other data). It won't need to change any call, since they are defined by the architecture and it is the same for Windows and Linux in this case. It will simply see a set of calls and know that is is, as an example, to draw a window and it will be replaced by whatever is necessary to do the closest thing on Linux.

Emulating a hardware device like the 360 is basically implementing it's hardware in software and then trying to optimize it to add direct translations whenever possible for a more Wine-like approach, something that won't be possible for all hardware components in the said device, adding a translation layer. Wine could originally be called Windows Emulator but since some good years, it's called "Wine is not an emulator". They refer to it as a translation layer and it's what Wine is. Even virtualization nowadays simply pass direct access to the guest OS so it can simply talk straight to the hardware (that sometimes even contains special functions to allow this). Most virtualization solutions won't allow you to run OS for different architectures just because they aren't emulating another hardware and simply passing it through (other like QEMU and libvirt will allow it simply because they have an emulation layer for that).



Adinnieken said:

I would encourage you to educate yourself.  Emulation is a subset of virtualization.  They are almost synonmous.   

WRONG!

Emulation is about replicating the full behaviour of a system in software. Virtualization is about creating a virtual device that runs directly on the underlying hardware. 



haxxiy said:
torok said:
 

People are with the wrong focus. CPU isn't the big problem. X360 CPU isn't much different of a Wii CPU in steroids with multiple cores. Problem is GPU. Wii uses a simple fixed function GPU that has all the functions implemented on hardware in a pretty predictable way. That's why lightning on the Wii is bland, because it has only one algorithm to do it and it is hardcoded. 360 GPU is programmable. Lightning is done with shaders so it can apply different lightning algorithms to any material. It's complex. This is what makes emulating any console after PS360 another level of challenge.

I think some might have read somewhere about CPU issues in emulation and taken it the wrong way. The problem doesn't falls squarely on the X360 CPU as much as on the XOne's. A huge part of both the CPU and GPU instructions of the X360 would fall as CPU work if it were to be emulated. The XOne and the PS4 don't have the juice to do it.

It would be amazing if it did, but then, a lot of things would be amazing and simply won't happen, so yeah.

The focus on frequency and not on Flops is where others fail to understand the power of the newer consoles.

The GPU of the Xbox 360 is .24TF.  The GPU of the Xbox One's GPU is 1.31TF.  More than 5X the processing power.  The Xbox 360 processor is capable of 0.06TF at 64-bit precision.  The Xbox One's processor is twice as powerful at 0.12TF at 64-bit precision.  With the Xbox One's GPU capable of handling CPU tasks, that puts the total processing power of the console at 1.43TF vs. the Xbox 360's 0.3TF.  Roughly 5x the processing power. 

If Microsoft is developing a VM for the console, they have 5x the original Xbox 360's power to do so with.  However, as I pointed out earlier in this thread, most likely they're developing it for an online service as this would provide a greater return on investment as well as long-term benefit.



Around the Network
Mr Puggsly said:

Go to Youtube and try looking for video of people playing games you tested.

Here's a video of someone that successfully booted Okami.

https://www.youtube.com/watch?v=6QiDTci9uMA

Looked in to it more and apparently needs a specific version of okami and an older build because newer builds introduce a bug that messes even the specific version up.

So yeah.. what we see here is exactly my point, just because it worked once under specific conditions doesnt help things if it has to be a specific version of the emulator for a specific region version of the game.

As i understand it the emulator IS still running hacked up, its just now using a game database to automatically set itself up for games when run, i.e. changing up its settings for best run scenario.

This is a two generation old sub-hd system, and its not running everything yet, theres plenty of stuff that will not run properly on ANY config, and a lot of the games have game-killing bugs that need hacks to bypass.

Does it mean a 360 emulator is impossible? no. but if they havent already been working on one for years (and they havent) then it wont be complete in time to see an xbox one release.



lucidium said:
Mr Puggsly said:

Go to Youtube and try looking for video of people playing games you tested.

Here's a video of someone that successfully booted Okami.

https://www.youtube.com/watch?v=6QiDTci9uMA

Looked in to it more and apparently needs a specific version of okami and an older build because newer builds introduce a bug that messes even the specific version up.

So yeah.. what we see here is exactly my point, just because it worked once under specific conditions doesnt help things if it has to be a specific version of the emulator for a specific region version of the game.

As i understand it the emulator IS still running hacked up, its just now using a game database to automatically set itself up for games when run, i.e. changing up its settings for best run scenario.

This is a two generation old sub-hd system, and its not running everything yet, theres plenty of stuff that will not run properly on ANY config, and a lot of the games have game-killing bugs that need hacks to bypass.

Does it mean a 360 emulator is impossible? no. but if they havent already been working on one for years (and they havent) then it wont be complete in time to see an xbox one release.

I didn't imply PC emuation is perfect, but the fact is most PS2 games are emulated and fully playable via a PC emulator.

PS3 first played PS2 games through hardware. Now PS2 games are playable on PS3 using software emulation.  Hence, Sony spent time making a PS2 emulator during the life of the PS3.

If MS feels a 360 emulator is financially worth while, we could potentially see a 360 emulator on X1. Perhaps that's further into development than they're leading us to believe.



Recently Completed
River City: Rival Showdown
for 3DS (3/5) - River City: Tokyo Rumble for 3DS (4/5) - Zelda: BotW for Wii U (5/5) - Zelda: BotW for Switch (5/5) - Zelda: Link's Awakening for Switch (4/5) - Rage 2 for X1X (4/5) - Rage for 360 (3/5) - Streets of Rage 4 for X1/PC (4/5) - Gears 5 for X1X (5/5) - Mortal Kombat 11 for X1X (5/5) - Doom 64 for N64 (emulator) (3/5) - Crackdown 3 for X1S/X1X (4/5) - Infinity Blade III - for iPad 4 (3/5) - Infinity Blade II - for iPad 4 (4/5) - Infinity Blade - for iPad 4 (4/5) - Wolfenstein: The Old Blood for X1 (3/5) - Assassin's Creed: Origins for X1 (3/5) - Uncharted: Lost Legacy for PS4 (4/5) - EA UFC 3 for X1 (4/5) - Doom for X1 (4/5) - Titanfall 2 for X1 (4/5) - Super Mario 3D World for Wii U (4/5) - South Park: The Stick of Truth for X1 BC (4/5) - Call of Duty: WWII for X1 (4/5) -Wolfenstein II for X1 - (4/5) - Dead or Alive: Dimensions for 3DS (4/5) - Marvel vs Capcom: Infinite for X1 (3/5) - Halo Wars 2 for X1/PC (4/5) - Halo Wars: DE for X1 (4/5) - Tekken 7 for X1 (4/5) - Injustice 2 for X1 (4/5) - Yakuza 5 for PS3 (3/5) - Battlefield 1 (Campaign) for X1 (3/5) - Assassin's Creed: Syndicate for X1 (4/5) - Call of Duty: Infinite Warfare for X1 (4/5) - Call of Duty: MW Remastered for X1 (4/5) - Donkey Kong Country Returns for 3DS (4/5) - Forza Horizon 3 for X1 (5/5)

Adinnieken said:

The focus on frequency and not on Flops is where others fail to understand the power of the newer consoles.

The GPU of the Xbox 360 is .24TF.  The GPU of the Xbox One's GPU is 1.31TF.  More than 5X the processing power.  The Xbox 360 processor is capable of 0.06TF at 64-bit precision.  The Xbox One's processor is twice as powerful at 0.12TF at 64-bit precision.  With the Xbox One's GPU capable of handling CPU tasks, that puts the total processing power of the console at 1.43TF vs. the Xbox 360's 0.3TF.  Roughly 5x the processing power. 

If Microsoft is developing a VM for the console, they have 5x the original Xbox 360's power to do so with.  However, as I pointed out earlier in this thread, most likely they're developing it for an online service as this would provide a greater return on investment as well as long-term benefit.


Again, flops isn't important, nor is it an accurate denominator to gauge a systems performance.

Lets grab two 100Gflop CPU's, remove the L1, L2, L3 cache and hamper the interconnect bandwidth by a quarter.
They're still both 100Gflop processors, but the one that doesn't have the cache and full speed bus is going to be significantly slower and no amount of "programming trickery" will get around that.
Not to mention game engines and thus by extension games, deal with more than just floating point mathematics, integer performance is important too, your "flops" doesn't take that into account at all.

To add to that, the Xbox One due to it's more efficient architectures can actually get more work done, per-flop than the previous generation, due to efficiency gains, compounding how unimportant flops are.

Stop using flops. - It means sweet bugger all in the real world.

The problem with emulating is that some instructions will not translate directly, thus to be emulated it may need to be split up into two, three, four or more instructions to achieve the same effect, hence why emulating comes with it, orders of magnitude more powerfull hardware to be achieved.

Microsoft can lower that as they can write for the low-level API or directly to the metal, but you will *never* get around the need to split some instructions up.

As for the GPU, Xenos was a little more heavily customised chip compared to the Xbox One's graphics processor, for instance the Tessellator implementation is completely different and I'm not even sure if they would even be backwards compatible from a hardware perspective as pre-direct X 11 Radeons used a propriety implementation that relied on N-Patches.




www.youtube.com/@Pemalite

Of course an emulator *is* possible and MS is of course able to build an emulator for 360. The question is: how fast will it run? They won't release an emulator where you play 360 games with 12 fps... and it doesn't need to by cycle-accurate to eat up a lot of performance... Also keep in mind that only 6 cores are available to devs currently. With HLE MS could of course gain a lot of performance back but it won't be enough to make a general 360 emulator. Perhaps after profiling they can build special emulators for selected games...