Microsoft 'Thinking Through' 360 Emulator for Xbox One

Status
Not open for further replies.

macmuchmore

Reputable
Apr 7, 2014
5
0
4,510
It might be hard to do, but it has been done before. Apple did it when they transitioned to the Intel CPUs. What about VirtualPC? Microsoft bought it - why not use that? Seriously, just do it and get off the pot. Tired of hearing Microsoft whine how hard something is...
 

itchyisvegeta

Distinguished
Oct 19, 2010
232
0
18,680
So the Power PC can emulate an x86 chip to play Xbox Original games on the 360, but an x86 chip can't emulate a Power PC chip to play 360 games on the Xbox One?

I think they need to rehire a few emulator programers.
 

weilin

Distinguished
It might be hard to do, but it has been done before. Apple did it when they transitioned to the Intel CPUs. What about VirtualPC? Microsoft bought it - why not use that? Seriously, just do it and get off the pot. Tired of hearing Microsoft whine how hard something is...

Is it doable? Sure, to get functionally correct emulator working is probably doable by a college student if given enough time. Microsoft can kick out an emulator in a few months without trouble. Will either result run smooth enough to actually play game? That's much harder to say. If you look at the emulator Apple put out, applications work, but not without it's glitches and the stuff supported is mostly 2D and latency insensitive.

Cross ISA emulation takes order(s) of magnitude of compute power. To put things into perspective, only the highest end of PCs can run a 360 emulator (traditionally CPU bound) but even then it's not entirely smooth. The XBone is nowhere near that kind of compute power. Microsoft will have the benefit of forward designing instead of reverse engineering so their efficiency will be higher than that of the emulator community but I'm not sure will be enough...

As for VirtualPC, that's designed to virtualize x86 OS on top of another x86 OS. It's more of less a way to pass instructions from the virtual world to the physical CPU. It won't help here at all.

I think many are missing the key point that, for 360 (powerPC) games to run on the XBone (x86), the game must be converted to x86 code. This could either be done at runtime (requiring additional compute power on top of running the game) or potentially before runtime and saved to disk (requiring a lot of disk space). Either case, the conversion will no nowhere near as efficient as compiling from a high level language. Will the final result be playable? maybe...
 

Shin-san

Distinguished
Nov 11, 2006
618
0
18,980
An emulator would indeed be tricky for consoles like the Xbox 360 and the PS3. The 360's problem in particular deals with the 6 huge SIMD units that the CPU has (1 per CPU thread). However, I would definitely prefer emulator over cloud streaming.

Dynamic recompiling might work, but the hand-tuned code would be the hardest to transfer over.
 

agentbb007

Distinguished
Jul 27, 2006
291
3
18,815
@itchyisvegeta yes a lot of the original xbox games were emulated but tons of them had major frame rate issues. IMO it's not worth the trouble trying to emulate the 360 games on xbox one. Just keep your 360 if there are games you still want to play.
@macmuchmore VirtualPC has nothing to do with PowerPC architecture it won't help.
 

bluestar2k11

Distinguished
Feb 1, 2011
145
0
18,680
""It turns out to be hard to emulate the PowerPC stuff on the X86 stuff."

That's funny, because i run my Gamecube and Wii titles on my PC all the time, it's an intel i5, and amazingly enough, gamecube is powerpc based!! Shocking! Microsoft is just being lazy, though that maybe a good thing, their xbox emulators for the 360 was awful.
 

weilin

Distinguished


The Xbox One has Jaguar Modules (AMD Kabini/Temash CPUs). It's nowhere near as capable as your i5. the 360 is also much more capable than a gamecube or a Wii. I'm sure they can make an emulator today if they had to, but I'm not sure it will be playable though...
 

AndrewMD

Distinguished
Sep 11, 2008
387
0
18,780
""It turns out to be hard to emulate the PowerPC stuff on the X86 stuff."

That's funny, because i run my Gamecube and Wii titles on my PC all the time, it's an intel i5, and amazingly enough, gamecube is powerpc based!! Shocking! Microsoft is just being lazy, though that maybe a good thing, their xbox emulators for the 360 was awful.


Considering that most gamecube games and wii games are low resolution type games, there should be no problem. Now enter in that the 360 had games that were much higher detailed, contained much more information, and needs a lot more computing power to run "consumer" friendly.

Definition for you:
Consumer Friendly = no glitches or issues
Tech Friendly = can contain glitches and/or issues.
 

bluestar2k11

Distinguished
Feb 1, 2011
145
0
18,680
I didn't say anything about it not taking a lot of power to do so, I just said it has been done on x86 hardware, so it can't be as hard as their implying, esp since these guys have the know how of everything in both systems, so designing a emulator to run previous games can't possibly be as hard as it is for the emulation community to make a wii one work well, who don't have all that information.

Though even if they got it working, how playable it would be (stares at halo 2's 360 emulator) it likely wouldn't be very good, unless they really put some work into it.
 

macmuchmore

Reputable
Apr 7, 2014
5
0
4,510
Is it doable? Sure, to get functionally correct emulator working is probably doable by a college student if given enough time. Microsoft can kick out an emulator in a few months without trouble. Will either result run smooth enough to actually play game? That's much harder to say. If you look at the emulator Apple put out, applications work, but not without it's glitches and the stuff supported is mostly 2D and latency insensitive.

Cross ISA emulation takes order(s) of magnitude of compute power. To put things into perspective, only the highest end of PCs can run a 360 emulator (traditionally CPU bound) but even then it's not entirely smooth. The XBone is nowhere near that kind of compute power. Microsoft will have the benefit of forward designing instead of reverse engineering so their efficiency will be higher than that of the emulator community but I'm not sure will be enough...

As for VirtualPC, that's designed to virtualize x86 OS on top of another x86 OS. It's more of less a way to pass instructions from the virtual world to the physical CPU. It won't help here at all.

I think many are missing the key point that, for 360 (powerPC) games to run on the XBone (x86), the game must be converted to x86 code. This could either at runtime (requiring additional compute power on top of running the game) or potentially before runtime and saved to disk (requiring a lot of disk space). Either case, the conversion will no nowhere near as efficient as compiling from a high level language. Will the final result be playable? maybe...
My point was that it IS doable. Rosetta, the emulator that Apple used was really good, not perfect, but it was good enough that people still use it today.

As for needing compute power that is orders of magnitude higher to do the emulation, I suggest that the XBOne IS that much more powerful. The CPU is multi core, the GPU has SIGNIFICANTLY more power than the XB360. Don't forget that the games made for the 360 are not as demanding as the newer games.

As for VirtualPC, you might want to read Wikipedia: it originally ran on PowerPC/RISC chips (MacOS) and emulated an x86 CPU so that you could run Windows. Only later did Microsoft change it to virtualize x86 OS on top of another x86 OS. The point is, Microsoft has that software - they own it. Why can't they leverage it to help create the emulator for the XB360? I am not saying it is the solution, rather that it is a tool that Microsoft owns that could easily be used to help create the emulator, even if it used to show how an x86 cpu is virtualized on a PowerPC cpu.

Lastly, I think YOU are missing the point. The entire purpose of an emulator is so that XB360 games could be run on the XBOne WITHOUT needing to be converted to x86 code.

And to my point - an Emulator SHOULD be possible. The CPU is newer, far more powerful; the GPU is also newer and far more powerful. This hardware should be powerful enough to run a XB360 emulator. I never said that it would be exactly like having an XB360 in your XBOne, or that the emulated games would play just as well as they would on a real XB360. I do think however, that a USEABLE emulator COULD be run on the XBOne.
 

agentbb007

Distinguished
Jul 27, 2006
291
3
18,815


Other than running VMWare and a Nintendo emulator I don't know anything about emulators, so I really can't comment about how easy or difficult creating a 360 emulator for Xbox One would be. But I am pretty darn confident if all MS had to do was copy and paste some VirtualPC code to create one they would have done it at Xbox One launch.
So it's obviously not that easy because neither MS nor Sony have done it for their next-gen consoles. And I'm sure both would love to be the first to put the backward compatibility feather in their next-gen consoles hats.

Also to your point that the XB1 is much more powerful than 360. Emulators are SLOW so 360 games would probably run really slow and have framerate issues on the XB1, because emulators are SLOW! Like I said I don't know details about why emulators are slow but from my experience they are slow boats from china. My nintendo emulator is slow with some games and I'm pretty sure my PC is a bit better than the 1983 Nintendo.
 

macmuchmore

Reputable
Apr 7, 2014
5
0
4,510


Other than running VMWare and a Nintendo emulator I don't know anything about emulators, so I really can't comment about how easy or difficult creating a 360 emulator for Xbox One would be. But I am pretty darn confident if all MS had to do was copy and paste some VirtualPC code to create one they would have done it at Xbox One launch.
So it's obviously not that easy because neither MS nor Sony have done it for their next-gen consoles. And I'm sure both would love to be the first to put the backward compatibility feather in their next-gen consoles hats.

Also to your point that the XB1 is much more powerful than 360. Emulators are SLOW so 360 games would probably run really slow and have framerate issues on the XB1, because emulators are SLOW! Like I said I don't know details about why emulators are slow but from my experience they are slow boats from china. My nintendo emulator is slow with some games and I'm pretty sure my PC is a bit better than the 1983 Nintendo.

You obviously have no idea how the economics of a gaming system work, otherwise you would understand that Microsoft makes it money from the games - not the consoles. Since that is the case why in heck would they NOT want you to buy all new games for their shiny new XBOne? Making a way to play all of your old games on the new console is not very high on their priority list since you would then not need to buy any new games. I am not saying they won't have an emulator, but Microsoft is probably not feeling the need to do one right now.... I never said they could cut and paste VPC code - I said it is a tool in their pocket that would facilitate the creation of an XB360 emulator.

I never said an emulator would be fast. What I did say was that an emulator could be useable... and in reality, it just has to be "good enough" and that is subjective - so we will never agree what that is.
 

weilin

Distinguished


I think you missed my point here.

Rosetta is probably great for a functional converter, but this issue at hand is performance, like I said before, MSFT can kick out a emulator very quickly if they wanted to, it would just run at like 3fps and achieve nothing... They would never announce the product even if they got it working if the performance was that bad.

The original VirtualPC code emulated x86 on PowerPC, not the other way around. It essentially buys Microsoft nothing... Converting A to B gives you no advantage going from B to A other than understanding how ISA A and B works. There's no magic way to reverse the logic.

Also, an emulator is a ISA converter. It's just a real time software converter. It basically uses a high level language code to read a line in memory, determine what it's doing and then do the same thing in the native ISA. This requires additional resources to do this translation on top of running the game itself. If your PC is fast enough, sure this is perfectly doable. If not, you can always isolate the conversion and save that to a file, and then try running it, it saves that bit of overhead.

My last point was, emulators for xbox 360 is still pretty bad for PCs which have significantly higher performance capabilities compared to the xbone and even then, the emulation performance isn't consistent. This makes me highly skeptical that this can be reasonably done on the xbone right now... We've left the days when CPUs double performance every 2 years, it's probably closer to 40% faster every 2 years and that's in very specific workloads.
 

agentbb007

Distinguished
Jul 27, 2006
291
3
18,815


No I'm not an expert in gaming economics nor gaming emulators but it seems you are an expert in both so I look forward to more posts so you may educate me.

But I have read that console developers make most of their money off video game sales. But right now console developers want people to buy their next-gen consoles and having backward compatibility would make their console more attractive to buyers. Because while its true people would play their old games they would also eventually buy new games as well, otherwise why would they buy a next-gen console in the first place?
So back to my point, if it was so easy MS and Sony would have already done it... Because they want people to buy their next-gen consoles...
 

weilin

Distinguished


The first thing I want to clear up is that the people who develop emulators are those who completely understand the ISAs they're working with and the architectures of the machines in question. I would argue that in many ways, they're much more capable than the people that MSFT will ultimately task into writing a emulator if it's ever done. The lack of documentation to them is probably less of an issue than it sounds like it is.

Now, the question isn't as simple as simply translating the code from one ISA to another. Like I've said before, a simple functionally correct translator can be written by any competent CS student in college. The real trick is to make it fast enough to make it playable. If the final result is like 3fps they may as well not invest the effort (and they certainly won't announce it).

Why is performance so hard? Well, how each processor is architected will significantly impact the final result. [strike]For starters the Xenon uarch (powerPC) was only 3 cores. Jaguar (x86) is 8, so a direct translate will already eliminate 5 of the cores. They will always be idle because the game was never designed to scale to 8 cores.[/strike]

edit - alextheblue has corrected me:


My response to that is (for those of you who care about architecture):
I see that Xenon actually has 2 VMX128 engines per core. This makes Xenon significantly higher performing with SMT (Simultaneous multithreading). Based on Wikipedia (I'll fix the Wiki in a minute), I thought it was just 1 VMX128 per core which makes the second thread essentially worthless so I didn't bother mentioning SMT. This puts the Xenon core+SMT vs Jaguar 2 cores at par in terms of SIMD engine count (lets ignore which one is more efficient).

My point still stands, just not as strongly, A direct translation would end up using only 6 of the 8 cores the xbone has. There's more details below for anyone who cares. While you're down there, go give him a thumbs up for his catch
/edit

The next question is, why can't the translator expand that to 8 cores? Well, lets just say even using a high level language, multi-threading is difficult at best (there reaches a point where the overhead of adding more cores actually hurts performance more than it helps), doing at the assembly level would be insane. It's the primary reason why most things are still single threaded, the cost of multithreading isn't worth the investment. I would argue that it would be easier to take the source code and compile the game for x86 and release the game on xbox live as a download than it is to get the translator to do the equivalent change correctly and more importantly consistently. This is a translation inefficiency (compared to compiling the game to be native to the ISA).

Another hazard in this translation is features in one ISA that the other ISA doesn't support. Any feature that PowerPC has that isn't supported in x86 will have to be circumvented via a set of instructions. Now instead of one instruction doing something, it takes 3-4 instructions to the same function. This makes the code longer for the emulated architecture to do the same thing. This is also a translation inefficiency.

How each core compares between the two architectures also have a huge impact. Look at Shin-san's post, he started going into a little bit of detail of PowerPC's capability. I will, however, do a bit of handwaiving here because I don't have the time to look up the actual details on the 2 architectures. Jaguar was written for the mobile space, it's inherently a small simple core (which is why MSFT can stamp 8 of them on 1 die). PowerPC was designed in the day to be a much more powerful core (closer to AMD's Piledriver core). Essentially, we're comparing today's netbook CPU with the top of the line PowerPC a few years ago. I question that a Jaguar core is that much faster vs a Xenon in a core vs core comparison.

If Microsoft pulls this off, I would be very impressed. If they do it via the cloud, they could throw significantly more processing power behind it.

P.S. So why does emulation work for the gamecube (PowerPC "Gekko" at ~500Mhz) and Wii (PowerPC "Broadway" at ~750Mhz) etc? Well, the opposite is true for those consoles. They are significantly less powerful compared to the machine you're running the emulator on. Look at those specs, it should be pretty apparent why they are possible but a 360 may not be (Xenon at 3.2GHz). Even then, I probably still wouldn't want run a GC or Wii emulator on Pentium/Celeron which are faster than the Jaguars found in the xbone...
 

alextheblue

Distinguished
""It turns out to be hard to emulate the PowerPC stuff on the X86 stuff."

That's funny, because i run my Gamecube and Wii titles on my PC all the time, it's an intel i5, and amazingly enough, gamecube is powerpc based!! Shocking! Microsoft is just being lazy, though that maybe a good thing, their xbox emulators for the 360 was awful.
Wii is ALSO PPC based... but that's only one factor. I can't even believe you're comparing Wii emulators to Xbox 360 emulators. The Wii runs a single core slow-as-nuts PPC CPU. The Xbox 360 runs a three core, six thread PPC processor clocked several times higher with strong VMX units. The Xbox 360 has more in common with a Wii U in terms of architecture and performance.

TLDR: You're on drugs.
 

agentbb007

Distinguished
Jul 27, 2006
291
3
18,815


That was a great post very educational on how emulation works, thanks for the lesson :) I'm a high level Visual Studio C# developer and doing multi-threading is not easy to keep track of, so I can only imagine trying to emulate at the low level these emulators work, OUCHY no thanks.
 

martel80

Distinguished
Dec 8, 2006
368
0
18,780
Why not do some decompile->intermediate language->recompile stuff instead of on-the-fly emulation? You don't need to do the re-interpretation stuff (huge overhead) all the time, only once (off-line, ahead of running the SW).
 

MihaiTM

Reputable
Apr 8, 2014
1
0
4,510
But third-party emulators Xbox360 to PC already exist (like: XeMu360), it will be easy for Microsoft to make one for Xbox One if was made already for PC's.
 
Status
Not open for further replies.