What's new

Emulation of seventh generation video game consoles


Local nut
Hey there,

Thought this would be an interesting topic, as people in other forums seem to talk about it all the time. I thought talking about the programming and more technical aspects of creating an emulator of a seventh generation console (or what would have been current generation consoles) would be interesting for programmers and the general public alike. So here it goes:

There are three big seventh generation consoles that everyone knows about: the Nintendo Wii, Microsoft's Xbox 360 and Sony's Playstation 3. There are also other much less popular seventh generation consoles, the only one I feel should be mentioned is the Zeebo, by Zeebo Inc.

Two of the "big-three" video game consoles are unemulated. The Wii is the exception. It can be emulated quite well using the Dolphin emulator, with good speed and accuracy using a modern PC. The PS3 and Xbox 360 remain unemulated.

Technical comparison of the big three:

  • CPU(s): "Broadway" PowerPC CPU (with Gekko instructions) @ 729MHz; "Scarlet" ARM11 CPU, controls non-GameCube extras @ 243MHz
  • GPU: "Hollywood" ATI/AMD GPU @ 243MHz
  • RAM/VRAM: 24MB 1T-SRAM (in GPU package); 64MB GDDR3 SDRAM
  • Networking: Wireless B/G; Ethernet through USB port
  • Other: Bluetooth (for Wiimotes); 2 x USB 2.0 ports (only one capable of 2.0 speeds?); SD card slot; 4 x GameCube controller ports

Xbox 360
  • CPU(s): Tri-core "Xenon" PowerPC CPU, two hardware threads per core (six hardware threads/"virtual" cores) @ 3.2GHz
  • GPU: "Xenos" ATI/AMD GPU (Unified Shading Architecture 3.0, DirectX9 compliant, limited DirectX10) @ 500MHz
  • RAM/VRAM: 512MB Unified GDDR3
  • Networking: 10/100Mb Ethernet port; optional wireless A/B/G/N adapter; integrated wireless N on "Slim" version
  • Other: 3 x USB 2.0 ports; IR receiver

Playstation 3
  • CPU(s): Cell Broadband Engine, one PPE (Power Processor Element, two hardware threads) and 7 + 1 disabled SPEs (Synergistic Processing Elements, one reserved to do Hypervisor work) @ 3.2GHz
  • GPU: Nvidia RSX "Reality Synthesizer" (similar to NV47) @ 550MHz
  • RAM/VRAM: 256MB XDR RAM (for CPU core/data, RSX command buffer); 256MB GDDR3 (for RSX framebuffer and other usage)
  • Networking: 10/100/1000Mb Ethernet; wireless B/G
  • Other: 2 - 4 USB 2.0 ports; Bluetooth; hardware/software based emulation (some)

The Wii is clearly MUCH slower than the Xbox 360 and PS3. This is the main reason the Wii has been emulated (among other factors, in my opinion) and the other two have not.

To be fair, there other challenges involved with emulating the other consoles, which I'll list:
  • Similarity: The Wii is VERY similar in power and design to it's predecessor, the GameCube. The Xbox 360 and PS3 are two new designs
  • Execution of unsigned code/RE: The Wii was hacked quite early on and was therefore documented quite well. The Xbox 360 was also exploited quite early too, but the hacks involved were not user friendly. The PS3 was only recently exploited.
  • Legal issues: For those of you living under a rock, Sony was a _little_ upset when it's console was exploited, it's keys discovered, and it's online service hacked and DDOS'd to shit. They have sued a few hackers, so doing anything that might piss them off is probably not a good idea.
  • Enjoyability: Sony and Nintendo are known for creating/having popular, exclusive game titles for their systems, as well as having interesting system designs. Microsoft on the other hand has VERY boring systems, the original Xbox being as close to an x86 PC as you can get, and the Xbox 360 essentially a Windows PC with a PPC CPU.

Well, now that we have a rather general idea of how these consoles tick and some of the challenges involved in emulating them, let's consider the design of emulators that could emulate these systems and look at existing (and currently being developed) emulators:

  • Dolphin: A very popular GameCube and Wii emulator with good compatibility, accuracy and speed
  • Xenia: An Xbox 360 emulator currently being developed by the guy who created the first PSP emulator

Most of us have probably heard of or even used Dolphin. Xenia, not so much. I wish the dev of that emulator the best of luck, and I'm sure he'll get something to boot. (Honestly, I don't know how he's going to stand emulating all those Win32 like API calls. I'd probably snap, not saying I'd ever be able to get that far :p )

Despite these issues, emulating these systems is certainly possible with current information and maybe a bit of RE. The Xbox 360, it's hypervisor, etc., have been reversed quite well, and it's Win32 like APIs (Xenia's site has links to some good API code naming scripts for IDA Pro, just look around). So has a lot of the PS3. I didn't find as much info on higher level PS3 API's (AKA GameOS/LV2 syscalls, interaction with official SPU modules (my understanding of exactly how this works is a bit if-fy), etc. Any input on this appreciated :) )

Well, I feel the rest of this should be discussed rather than read a bunch of crap I've written.

What are your thoughts on seventh generation console emulators and emulation of current generation consoles? Ever been interested in creating or working on one? Maybe some system specifics on emulating any of them, their design, etc (I've looked through XeLL, LibXenon, PSL1GHT and other Xbox 360 and PS3 related projects' source code, so hopefully I'll know what you're talking about :p )? Any work you've done towards/experience about emulating these systems or what used to be current gen consoles? Questions or anything else?

Either way, hopefully you like the thread/topic. If you can, try to keep discussion at least *somewhat* technical (rather than "EYE WANTZZZ TEH ZBOX EMUzzzZ!!!!11!!11one!").

- CHR15x94
Last edited: