Is Xbox One's Backwards Compatibility a success?

Publisher Microsoft
Developer
Platforms tested XboxOne Xbox360
With both PS4 and XboxOne having a sizeable and growing install base one of the key areas for attracting more of the mass market, mums and dads is to allow Lille Timmy or Tanya the option to play all their old games again on their new shiny gaming box.

UPDATED

With more and more titles hitting the BC list this page will grow as I test more games and these include updates for past titles. Below you can see the HUGE improvement Halo Reach has now received on XboxOne outperforming the 360 release now. Lost Odyssey has also appeared and again is much better now that the original release. This page will see the big updates of future titles and updates so check it or the YouTube channel for more.

Back in the day

Backwards compatibly is always and I mean always a much bigger case in theory than practise, but it is still an important area to cover and can really help sales with the mental hurdle overcome. But at it stands both consoles no longer allow you to play all your old games on the same machine (although this was only partly true last generation also dependant on machine version owned and or particular game). So with Sony taking the route of a streaming/rental service for PS3 titles on PS4 it is left to Microsoft and its XboxOne emulation virtual machine solution to open its vast back catalogue of X360 titles to its planned expanding audience, but is this required at all? What will this actually do? And does it even work very well? To go through these question first we need to explain just what has happened this generation and why the solutions are FAR from plain sailing.

This generation is not as simple but this has not stopped Microsoft striving ahead with a very good start and commendable attempt to remove this obstacle from its audience. As the shift away from a PowerPC and more importantly RISC (reduced instruction set) In-Order CPU with a vastly different instruction set to the now x86-64 CISC (Complex Instruction Set) CPU Out-of-Order machine. Meaning aside extra hardware (the original solution Sony took with the PS3) simple software support was just not on the agenda. But these consoles do have the advantage of how they have been constructed and operate, with a virtualised environment being exactly the kind of thing emulation was designed for. To learn more about how all this works within the system and virtualisation please check out our What are consoles article from last year which should help explain it in a far more detailed method on how both these machines have been created and operate.

HALO REACH UPDATED


What is a VM

TL:DR version is that the big M have created a complete VM(VirtualMachine) of the Xbox360 operating system included with each game and this runs as any normal app or 'game' as you would call it, with the XboxOne treating the entire thing as such while the emulation VM handles all the relevant hardware allocations and for all intents it thinks it is running on an Xbox360 as it really is as the Hypervisor will allocate the resources between the hardware/Software layers. But this aside what Microsoft engineers have achieved here is not only commendable but very solid and impressive, hopefully it will be popular enough for them to get more time and refine the emulation process. This works by having the original instruction translation handled using a wrapper with JiT methods between the layers which as you can imagine adds some overhead as any wrapper and realtime compile will do. And here a Xenon Tri-core 3.2Ghz CPU is being handled by 6 or more 1.75Ghz cores with entirely different modus operandi.

But how does this even happen? Well the relatively high level version is that the VM is running and communicating as if it were talking to the old X360 hardware as expected and the XboxOne see’s the entire thing as any normal application i.e. a game hence why GameDVR, snap, screen capture etc all work seamlessly with all emulated titles.The VM takes the Requests/Instructions and uses the hardware view it has been allocated by the Hypervisor to complete these tasks. The meat of this will come down to the CPU side as this will handle all the game logic and render calls for the GPU, the relatively huge expanse of memory allocation means that all this extra code and wrapper along with its buffers needed from the native design can also be used to keep the process as fast and slick as possible and present in Ram. Each command will be received from the game to the {Theoretical} API and will await the relevant hardware to perform the task requested and either return the result to another process/other algorithms or complete the task and draw the frame. The issue here is this is all inbound in a language the host hardware does not understand so it needs a translator in the middle (the JiT wrapper) to process each and every request, translate into the expected language it can understand and then allow it to process the job as expected. Once this is complete any returns are also translated back through the same abstraction layer back to the originator to update the game or re-use for other commands. Now all this is happening in microseconds thousands of times per frame which means that the host hardware in the XboxOne has to achieve all the same results in less time as it has to handle the 2-way translation layer within its budget in addition to the requested workload. This translates into the GPU having an easier time achieving this reduced time slice and could most likely render the same frame as before with a higher resolution than its predecessor but the likely hood of this happening along with it not always being the case maybe even throughout a frame let along a complete game means it is very, very unlikely we will see this appear in later releases.

Lost Odyssey


But, but more Powah

Now the first question many will ask is "the newer machine is much more powerful than the old one so this should be easy?" but this is not the case. You see machines and CPU’s in particular with the API factored in mean that both machines are chalk and cheese in how they would complete a given task or even how it would be programmed to complete it in the first place. The native instruction sets of a modern CPU allow hardware to facilitate and improve commands/functions based on these pre-determined libs and the given compiler that handles this will convert all data into the most appropriate instruction method for the target machine either machine code or assembly and a good compiler can improve code performance by a large margin. Now in a standard PC space this would still create issues but would be far more uniformed than the console space, this is simply because the API layer is much lower allowing and encouraging all manner of tricks to improve performance in game and is a very common occurrence on the platform. Factor in that all the code running here is designed and thus written to be processed on a RISC In-order CPU and in parallel as received within the execution units in contrast to the easier/more generic CISC Out-of-Order CPU it is now running on that will branch predict and pre-fetch data based on its own paths. Now this emulator has to handle all those tricks that were designed to play up to the X360’s native hardware, a quick example would be that both the PS3 and X360 had very powerful CPU’s at the time and as developers got used to the hardware and empowered by the API allowing far more control meant that some games could and did balance render work on both GPU AND CPU (far more commonly known on PS3 but also on X360).

This means that some games are using the CPU for work far more suited now on the GPU than the CPU and this cannot be easily shifted within the code. Add in how variables are handled within each like Floating Point calculations that the PPE’s of the PowerPC Xenon were pretty good at, these are simply numbers that allow more precision by having a decimal place (the tail being the floating part), FP16 etc is a standard format. Along with commonly used integers which do not allow this level of detail with signed or unsigned Int’s like Uint16/32 which allow larger ranges/bandwidth without the precision given with floating points. And these kind of choices, trade-offs are ever present and what may work well on one may not on another or need certain things to be handled differently. Now for an example if a game has used the FP16 in large portions of its code then this means that the CPU either has to try and convert these to Ints if they are passing back to the GPU with the relevant issues that may occur or most likely use the FP it has been given which means it may actually be slower here than with the aforementioned variable it would have expected (and would have been coded for had it been a XB1 title). Now remember that even before we get here it has already wasted precious ms converting the original request to knwo what it is being asked of it and you can see where issues can and do arise. But this is a rough and by no means exhaustive or precise example but should help explain some of the work that is going on here and how it is far from a fire and forget solution. The team could look at handling this much better with tailored code and threading of requests, better conversation, use of ALU's and API tweaks but it will always come down to the ever present time/money factor. But what it is achieving is very solid indeed (helped by having direct access to original API libs and game code) and should not be ignored but this short and high level look hopefully helps explains just some of the pitfalls and issues the team is having to deal with here and why each title needs to be worked on and a full image downloaded before it will work.

But what about the games

In this series I will cover each game so that they do not become to long and convoluted. This one is looking at Mass effect, a big game on last generation and now the first game is fully playable on the XboxOne it will allow us to cover a game that we have never looked at before.


MASS EFFECT

Starting with the raw code on the native machine of the 360 the first thing that strikes is the visual style and choices have held up well overall, facial detail along with animation are decent and the expanse of the ships, alien design and worlds are very well done. But performance is not so complementary, as it runs with V-Sync mostly being off across play including the real-time cut scenes. Which helps it better achieve its 30 target but even here it can have longer dips into solid 20 or 50ms frame times throughout play. This means that it is rarely at a solid or non tearing display and during any of the games extensive action scenes it will have either one or both of these happening.

Now on the XboxOne remember this is the exact same code running under emulation so any improvements will come from faster I/O, execution and we tend to see areas where the GPU heavier section run better on the X1, as here with a locked 20 section on the 360 now hitting a capped 30. But another issues ,or in my case a benefit, comes from the entire emulator including the O/S and game as one image this means the V-Sync is enabled across the board making all games under emulation ( at present at least) having the frame locked to a complete refresh cycle. Now with a game like Mass Effect which as you can see from the video just tears up the screen better than a teen slasher movie when this occurs on the X1 it will hold the buffer flip until the full frame is ready, which results in the heavier sections seeing far bigger and more prolonged drops on the X1. The benefit comes with a much more solid and wavy free display at the expense of far longer frame time and thus a much lower average equating to performance & response. But let's not get confused here the emulator can only work with the games code base and all of its issues, paths and such are all run here warts an all. The game has no visual improvement over its original 360 release and is upscalled to 1080 and although it is showing its age being 8 years old now, animation is clunky, textures are a mixed bag but it has film grain, acceptable motion blur if slightly overdone, more common last generation. All this does not distract from a game and series that showed and started great promise with expansive scope and if you have it lying around you can now play it on your XboxOne.

Summary

But as is not the unsurprising case for such a woefully underperforming game under emulation and a newly enforced V-Sync it performs worse than the original release, cutscenes can at times run better but in general play the 360 is the best of a bad bunch. You can see the stats in the rest of this video along with more side by side footage so you can judge for yourself.


The work put into this solution for BC titles is not an insignificant amount and only Microsoft accountants will know if it was a success from a ledger point of view. But for the audience and choice in games and options it really is a success even if from the currently tested titles the results in terms of performance can be a mixed bag of better/similar or worse. This should not distract from its usefulness in allowing more people to upgrade with less fear of losing access to some of their own cherished titles. We can only see how long and wide the solution will run for and if the engineers are given the time and budget to improve/refine the solution further with maybe even upgrades a possibility in the future.


As we be covering many of the larger titles in this list which you can check out across other articles and videos from Halo Reach,Assassins Creed 2, Gears of War 3 & Condemned with more to come.

Other articles you may enjoy
#
Bloodborne Attention 2 Detail Technical Analysis
From Software have been in hiatus over the past year after dropping the last deathly steeped dark…
#
Street Fighter V: 1st Contact Analysis
A title that is rooted into videogames history, the colossal series from Capcom has spanned more…
#
Dark Souls 2 Definitive Edition: Head 2 Head
We commence April with yet another head to head and technical analysis. From software have been busy…