Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How are game consoles reverse engineered so emulators are created?

How do people reverse engineer consoles such as the Wii, to create emulators for their game executables?

like image 647
liamzebedee Avatar asked Nov 19 '11 22:11

liamzebedee


People also ask

What is reverse engineering a game?

When a game is reverse engineered it becomes open to new life, new levels, sounds and more hours of fun. Reversing is like a game inside the game, when you have finished playing the game the fun of reversing can begin! Why learn reverse engineering?

How does game emulation work?

If I'm a bit too vague on certain things, please ask questions so I can continue to improve this answer. Emulation works by handling the behavior of the processor and the individual components. You build each individual piece of the system and then connect the pieces much like wires do in hardware.

Why do emulators need to be set at a specific time?

Certain platforms -- especially older consoles like the NES, SNES, etc -- require your emulator to have strict timing to be completely compatible. With the NES, you have the PPU (pixel processing unit) which requires that the CPU put pixels into its memory at precise moments.

What is the difference between NES emulation and dynamic/static recompilation?

With the NES, you have the PPU (pixel processing unit) which requires that the CPU put pixels into its memory at precise moments. If you use interpretation, you can easily count cycles and emulate proper timing; with dynamic/static recompilation, things are a /lot/ more complex.


1 Answers

As for the game consoles and such they are normally based off industry standard processors. The game company just buys the processor and uses it - they don't pump $200,000,000 into designing their own CPU and trying to compete with the likes of Motorola, Intel, Freescale etc.

These same industry standard processors frequently have industry standard debug ports, JTAG/BDM/NEXUS etc. The game console manufacturer has to debug their own device too! Those are frequently used to reverse engineer what the console is doing as it runs its operating system. It isn't always that simple since you may have to find ways to activate the debug features but this is a general overview.

For the emulator itself you need to emulate the hardware architecture and hardware itself. Once you can simulate this you can simply "run" the game console's operating system and games and they have no idea that they're not running on real hardware. There are many techniques to virtualize the hardware so it runs the code fast enough but that's a completely different topic.

like image 160
hsikcah Avatar answered Oct 13 '22 20:10

hsikcah