Reversing Emulators

Edit on Github | Updated: 17th October 2020

What is a Reversing Emulator?

To put it simply a Reversing emulator is a standard emulator that has been modified to add additional debugging and tracing functionality useful for reverse engineers.

Why use a Reversing Emulator?

There are a few use cases where you would want to use a reversing emulator rather than a standard emulator, these include:

  • Cheat creation (e.g Game genie/Action replay codes)
  • Creating Tool-Assisted-Superplays (TASing)
  • Game Modding (adding new content to existing games)
  • Full game reverse engineering (re-creating the source code of a game)
    • Porting games to other platforms
  • Debugging glitches and other bugs in a game
  • Learning how a feature in a game was implemented
  • Asset ripping (exporting images/sounds/models etc from a game)
  • Re-mastering games with higher quality assets

Where do I download?

Version 0.1 is only available for MacOSX and you need RetroArch pre-installed, you can get version 0.1 here. If you want other platforms you will need to midify the source code slightly.

Extract the zip file and drag and drop a GB/NES/SNES/GG/SMS ROM file on to the application called run_macosx.app and it should open the interface in your default web browser.

To run a GameBoy game, open a terminal in the directory you extracted and run:

/Applications/RetroArch.app/Contents/MacOS/RetroArch -L sameboy_libretro.dylib yourgame.gb

It will open a new tab in your default browser pointing to “http://localhost:1234/#/”, Click on Resume in the top Header and then click Run to start the game.

image


libRetroReversing

In order to provide a consistent user experience and shared functionality across different console generations a new library was created to encapsulate common functionality.

The C/C++ library is called libRetroReversing due to it being based on libRetro and adding reverse engineering functionality to the libRetro cores.

Thus libRetroReversing enabled cores can run on any libRetro frontend such as RetroArch.

Creating your own Reversing Emulator

If an existing Reversing Emulator does not exist for your favourite console you can follow our guide to create your own based on an existing libRetro core.

Creating a new reversing emulator

For more information check out this post.


Available Consoles

More and more consoles are becoming supported with the aim of most of the Sega/Nintendo/Sony LibRetro cores being supported by the end of 2021.

Nintendo 64

N64 Reversing Emulator - Mupen64+ RE

For more information about the N64 Reversing emulator based on Mupen64 check out this post.

Sega Saturn

Sega Saturn Reversing Emulator

For more information about the Sega Saturn emulator based on Beetle check out this post.

Nintendo GameBoy (DMG & GBC)

Game Boy (DMG/GBC) Reversing Emulator

For more information about the Game Boy and Game Boy Color reversing emulator based on Sameboy check out this post.

Pokemon Mini