Retro Game Development and Reversing Tools of the Trade

Edit on Github | Updated: 20th November 2024

Explore the Tools of the Trade

Back in the day, game development was both an art and a science, involving a unique set of tools and technologies. On this site, you’ll find comprehensive links and guides to the essential tools used during the golden era of video game creation.

Programming

Programming Languages

Discover the programming languages that powered the classics. From the assembly languages that squeezed every ounce of performance from early hardware to the C and C++ languages that enabled more complex game designs, we cover the essentials that brought pixels to life. Dive into the specifics of languages such as:

  • Assembly: The low-level language used for its unparalleled control over hardware.
  • C: The versatile language that struck a balance between performance and portability.
  • C++: The language that introduced object-oriented programming to game development.

Exploring Retro Game Programming Languages - From Assembly to higher level languages

For more information on Programming languages used for game development check out this post.


Assemblers & Compilers

Learn about the assemblers and compilers that transformed code into playable games.

These powerful tools were pivotal in optimizing and translating the developers’ visions into the games we remember.

Understand the role of early compilers and their impact on game performance and development workflows. Key tools include:

  • Assemblers: Programs like MASM and TASM that converted assembly code into machine code.
  • Compilers: Tools like GCC and Watcom C that compiled higher-level code into efficient machine code.

GNU Compiler Toolchain

For more information on how GNU GCC was used in game development check out this post.


Game Development IDEs

Explore the Integrated Development Environments (IDEs) that were instrumental in retro game development.

These IDEs provided comprehensive toolsets for coding, debugging, and testing, streamlining the development process for many classic games. Key IDEs from this era include:

  • Microsoft Visual Studio: A powerful and versatile IDE that supported multiple programming languages, making it a favorite among game developers for its robust debugging tools and integrated development features.
  • Borland C++: Known for its speed and efficiency, Borland C++ was a popular choice for many game developers due to its advanced compiler technology and comprehensive library support.
  • CodeWarrior: Initially developed for Macintosh, CodeWarrior later expanded to support multiple platforms, offering a flexible environment for cross-platform development which was essential for many game studios. Had special versions for PS2 and Gamecube support [^2].
  • Turbo C++: An early IDE by Borland, Turbo C++ was known for its simplicity and speed, providing a streamlined environment for writing and testing code quickly.

These IDEs were pivotal in creating the games that defined a generation, providing the necessary tools and environments to bring imaginative worlds to life.


Software Development Kits

Every platform had its own official Software Development Kit (SDK), so whether you were developing for the Playstation or the PC you would be interacting with different APIs. In addition there were third parties that created their own multi-platform SDKs which could be used on multiple games consoles or Operating Systems.

We have a post specifically about all the different SDKs for each platform.

Introduction to Software Development Kits (SDKs)

For more information on SDK used to create retro games, check out this post.


Asset Development

3D Modelling

Explore the evolution of 3D modeling tools that gave depth and realism to early 3D games. From primitive polygon editors to the pioneering software that laid the groundwork for today’s sophisticated 3D graphics, get insights into the creative processes behind iconic game visuals. Essential tools and techniques include:

  • Early Polygon Editors: Basic tools for creating simple 3D models.
  • Advanced Modelling Software: Programs like 3D Studio, SoftImage and Maya that allowed for more detailed and complex designs.
  • Texture Mapping: Techniques for applying textures to 3D models to enhance visual realism.

3D Software used in Retro-era Game Development

For more information on 3D Software check out this post.

2D Images, Sprites and Textures

Known software used in the creation of 2D Image asserts for retro video games include:

  • Deluxe Paint (aka DPaint) - Created by Electronic Arts
  • DeBabilizer - Shown off during 1997 Computer Game Developers Conference (Used for palettizing sprites for StarCraft [^1])

8-bit EGA Pixel art at LucasArts

Mark Ferrari has an excellent GDC talk, in which he discussed some ofthe techniques for drawing 8-bit game graphics, including color cycling and pallet shifting in Deluxe Paint:


Music Creation

Music has always been a cornerstone of the gaming experience. Uncover the music creation tools and techniques that produced the memorable soundtracks of retro games. Learn about the hardware limitations and ingenious methods composers used to create captivating game music. Important aspects include:

  • Sound Chips: Hardware like the SID chip in the Commodore 64 and the Yamaha YM2612 in the Sega Genesis that defined the sound of many classic games.
  • Tracker Software: Programs like FastTracker and ProTracker that allowed composers to create music with limited hardware capabilities.
  • MIDI Composition: The use of MIDI to sequence and control sound modules and synthesizers for richer game audio.

Reverse Engineering Tools for Games

Reverse engineering is a vital process for understanding and recreating the magic behind retro games. By dissecting and analyzing the original game code, assets, and mechanics, enthusiasts can learn how these classics were built and even modify or enhance them. Our site provides detailed information on the essential tools and techniques used in reverse engineering games. Here’s an overview of the key tools you’ll need:

Disassemblers

Disassemblers are crucial for breaking down compiled game code back into human-readable assembly language. These tools allow you to see the underlying instructions that the game uses to function, providing insight into the game’s logic and structure.

  • IDA Pro: One of the most powerful disassemblers, supporting a wide range of processors and file formats.
  • Ghidra: A free, open-source disassembler developed by the NSA, known for its robust features and user-friendly interface.
  • Radare2: A highly customizable and versatile disassembler and debugger, popular in the open-source community.

Disassemblers - A Deep Dive

For more information on Disassemblers check out this post.


Debuggers

Debuggers are used to test and analyze game code in real-time, allowing you to track the execution of programs, inspect memory, and find bugs or glitches.

  • OllyDbg: A popular Windows debugger known for its strong analysis capabilities and ease of use.
  • x64dbg: An open-source debugger for Windows with modern features and an active development community.
  • Cheat Engine: While primarily known as a game cheating tool, Cheat Engine’s debugging features make it useful for reverse engineering.

Hex Editors

Hex editors let you view and modify the raw binary data of game files. They are essential for making precise changes to game code and assets at the byte level.

  • HxD: A fast and efficient hex editor for Windows with features like file comparison and memory modification.
  • Hex Fiend: A powerful hex editor for macOS, capable of handling large files with ease.
  • 010 Editor: A professional-grade hex editor with powerful scripting and parsing capabilities.

Decompilers

Decompilers attempt to convert executable code back into a higher-level programming language, making it easier to understand and modify.

  • Reko: An open-source decompiler designed for multiple architectures and file formats.
  • RetDec: A retargetable machine-code decompiler that supports various architectures and file types.
  • Ghidra: Besides being a disassembler, Ghidra also includes decompiler features that provide pseudo-code representations of disassembled binaries.

Introduction to Decompiling C++ with Ghidra

For more information on Ghidra check out this post.

File Format Analyzers

Understanding game-specific file formats is crucial for modifying assets and extracting valuable information. These tools help analyze and manipulate proprietary file formats used in games.

  • Game Extractor: A tool for opening and modifying the archives used in many games.
  • QuickBMS: A universal script-based extractor that supports hundreds of game archive formats.
  • TrID: A utility for identifying file types and formats based on their binary signatures.

Emulators

Emulators replicate the hardware of old gaming systems on modern computers, allowing you to run and test games in a controlled environment.

  • MAME: An emulator that supports a wide range of arcade and console systems.
  • PCSX2: A PlayStation 2 emulator that provides debugging features for reverse engineering.
  • Dolphin: A GameCube and Wii emulator known for its accuracy and debugging tools.

Reversing Emulators

For more information on Reversing Emulators check out this post.

Game Cracking Software used back in the day

Cracking games for piracy and other purposes has existed for almost as long as the games industry has existed.

We have tons of modern software for Reverse Engineering and ROM Hacking but how were games cracked back in the day?

We have a post specifically about this software in the link below.

Game Cracking Software used back in the day

For more information on Game Cracking software used back in the day check out this post.


Posts

Here is a list of posts on the site that have been tagged as related to game development or reverse engineering tools.

3D Software used in Retro-era Game Development

Read all about 3D Software used in Retro-era Game Development in this s...

3D Studio (Max)

Read all about 3D Studio (Max) in this s...

Central Point Backup Format Visualiser (CPBACKUP.001,.002..)

Read all about Central Point Backup Format Visualiser (CPBACKUP.001,.002..) in this s...

Creating a LibRetro Frontend in Rust

Read all about Creating a LibRetro Frontend in Rust in this s...

Diaphora - Binary Executable Difference Tool

Read all about Diaphora - Binary Executable Difference Tool in this s...

Disassemblers - A Deep Dive

Read all about Disassemblers - A Deep Dive in this s...

GNU Compiler Toolchain

Read all about GNU Compiler Toolchain in this s...

Game Programming Starter Kit

The Game Progrtamming Starter Kit was a product that aimed to provide professional level game development tools to the wider public

...

</div>
ILBMViewer - Deluxe Paint Image Viewer Online (.LBM and .ILBM)

Read all about ILBMViewer - Deluxe Paint Image Viewer Online (.LBM and .ILBM) in this s...

N64 3D Modelling Software

Read all about N64 3D Modelling Software in this s...

PDB Files - Using PDB files for Reverse Engineering

Read all about PDB Files - Using PDB files for Reverse Engineering in this s...

Exploring Retro Game Programming Languages - From Assembly to higher level languages

Read all about Exploring Retro Game Programming Languages - From Assembly to higher level languages in this s...

Sega Saturn SYSROF Object Format Visualizer (.obj,.abs)

Read all about Sega Saturn SYSROF Object Format Visualizer (.obj,.abs) in this s...

Sega Saturn Artist Tools

Read all about Sega Saturn Artist Tools in this s...

Sega Saturn Memory Map

Read all about Sega Saturn Memory Map in this s...

Sega Saturn Save State Visualizer (.yss)

Read all about Sega Saturn Save State Visualizer (.yss) in this s...

Retro Game Development and Reversing Tools of the Trade

Read all about Retro Game Development and Reversing Tools of the Trade in this s...

iHaxGames Memory Editor for MacOSX

Read all about iHaxGames Memory Editor for MacOSX in this s...

Understanding libRetro - An Internal Look for Programmers

Read all about Understanding libRetro - An Internal Look for Programmers in this s...

N64 ROM Visualizer (.z64)

Read all about N64 ROM Visualizer (.z64) in this s...

N64 Rom Analysis with Radare2

Read all about N64 Rom Analysis with Radare2 in this s...

</div> --- # References [^1]: [What did developers in the 90s use to create pixel graphics for their games r/gamedev](https://www.reddit.com/r/gamedev/comments/ygosp6/what_did_developers_in_the_90s_use_to_create/) [^2]: [GDC Evolve Page 36](https://ia803200.us.archive.org/11/items/evolveeventprogr2004unse/evolveeventprogr2004unse.pdf)

Want More?

Follow us on Twitter & Bluesky!