Emulation & RE
2024-12-02
What Is It?
Emulation is the process of replicating the behavior of one system using another. In computing, it typically refers to software or hardware that mimics the functionality of a different system, allowing programs designed for the original environment to run seamlessly on another platform.
Reverse engineering involves analyzing a system-whether hardware, software, or both-to uncover how it operates. This is often done without access to source code or official documentation, with the goal of reproducing, modifying, improving, or simply understanding its design.
From Hobby to Expertise
My interest in emulation began in the late 1990s, when I developed my first hobbyist projects focused on handheld systems like the Game Boy and WonderSwan. Over time, this passion led me to contribute to arcade emulation efforts, including involvement with the MAME project. I eventually took part in several commercial emulator ventures, expanding my experience in both standalone and team-based environments.
Over the past few years, my focus has sharpened around emulation and reverse engineering. I’ve developed and optimized emulators for various platforms - ranging from gaming consoles and vintage computers to arcade machines - prioritizing accuracy, performance, and long-term stability.
Beyond core emulation work, I’ve built a variety of supporting tools such as:
Graphics extractors and converters
Custom debuggers
Disassemblers
These enhance analysis capabilities and streamline development processes. I also write diagnostic and compatibility test programs for emulated platforms, often in low-level languages for fine-grained control.
In addition to this portfolio section, the site features a range of technical articles and hardware analyses written by me. These include deep dives into obscure architectures, reverse engineering methods, memory layout structures, and operational mechanics of classic gaming platforms. All content is based on years of hands-on experience developing emulators and system-level tools.
Examples of my work
Hash – Gameboy Color Emulator – My first emulator project, started in 1998 as a personal hobby. It emulated the Gameboy Color platform and featured an integrated debugger with real-time inspection of CPU, video, and audio registers. Sound was not emulated - the project focused on analyzing code behavior and hardware operations. Over time, I began using Hash as a development aid in creating commercial games for the GBC platform, allowing me to better understand the hardware’s constraints and fine-tune performance.
Duck - Megaduck / Cougar Boy emulator ( Gameboy clone with shuffled around hardware registers )
Cygne – Wonderswan / Wonderswan Color Emulator – The first publicly available emulator for Bandai’s Wonderswan and Wonderswan Color consoles. Built primarily through reverse-engineering game code without access to official hardware documentation. Cygne featured an integrated debugger that allowed inspection of CPU, video, and audio registers. It served as a deep exploratory tool for understanding this uncommon platform and laid the foundation for further community-driven emulation efforts.
MAME – Multi Arcade Machine Emulator – I worked with the MAMEdev team for over a decade on developing the MAME emulator, focused on precise emulation of arcade game machines. I contributed to the emulation of dozens of games and hardware platforms, specializing in reverse-engineering arcade systems and replicating their behavior. The project was instrumental in preserving gaming history and documenting rare and otherwise forgotten titles and machine.
Analytical tools for emulated platforms – I also developed custom tools that run directly on emulated systems, mostly written in low-level assembly. These tools were designed to help understand hardware behavior and test system operations in near-authentic conditions. One example is 68k-Seibu - a Seibu arcade hardware analysis tool written in Motorola 68000 assembly, running on emulated custom arcade platforms with proprietary coprocessors.
Specialized Asset Analysis Tools – Utilities for inspecting, extracting and converting graphical, audio, and binary data formats. Includes platform-agnostic viewers, as well as a dedicated tool for handling specific assets. Focused on reverse engineering workflows and proprietary format decoding.
Retro Game Asset Toolset – Designed for deep data manipulation across classic platforms (Famicom, Game Boy, Sega Saturn, Arcade and others). Modular architecture allows for efficient extraction, editing, and conversion of proprietary formats. (Some specifics protected by NDA)
MIPS Emulator & Glide-to-GLES Wrapper – Custom MIPS CPU core emulator integrated with a high-level wrapper translating legacy Glide2x calls into modern OpenGL ES 3.2. (Project under NDA )
Multi-System Emulator for 8/16-Bit Platforms – Comprehensive emulator supporting a wide range of vintage consoles, handhelds, and home computers from the 8- and 16-bit era. (Project under NDA )
Internal iOS Static Analysis Tool – Developed for F-Secure to support cybersecurity investigations of mobile applications. Designed to statically analyze iOS apps targeting both ARM64 and LLVM Bitcode, uncovering vulnerabilities and threat patterns. Primarily used in audits of mobile banking software. (Details under NDA; proprietary internal use).