Emulator Bugs: Genesis Grab Bag

This post covers a few Genesis emulation bugs that I ran into at various points, that I don’t think are substantial enough to justify their own posts (barring maybe the third one). The bugs that caused these are not particularly interesting - 2 were caused by me failing to thoroughly read existing documentation, and 1 was an accuracy shortcut that worked until it didn’t - but I think it’s an interesting way to explore some unintuitive hardware behaviors and how games depend on them.

PC Engine CPU

I’ve been working on a PC Engine emulator (aka TurboGrafx-16) after getting the bug to start looking at a new system, and I’ve found it to be pretty interesting hardware-wise. Originally released in 1987, its hardware is in a sort of awkward spot between the 3rd generation gaming conoles (NES, Sega Master System) and the 4th generation consoles (Genesis / Mega Drive, SNES), though it’s generally grouped with the latter due to featuring notably improved graphics over NES and SMS.

A Way to Do Emulator Audio Resampling

As with some/most of my previous posts, this is me writing something I wish I’d had when I started doing this: how can an emulator translate the audio samples generated by the emulated console audio hardware into something that the host computer’s audio device can play back, without compromising on audio quality?

Game Boy Advance Audio Interpolation

This post describes an audio enhancement that a Game Boy Advance emulator can implement to reduce audio aliasing and noise, at a fairly high level. To start with, here’s a comparison from Metroid: Zero Mission as an example of what this can do:

Emulator Bugs: Sega CD, Part 2

This is a continuation of the previous post on Sega CD issues. Where that post described two bugs caused by bad emulation of the CD-ROM hardware, this one describes several bugs that were completely unrelated to CD-ROM emulation. (This post was mostly finished months ago but I didn’t want to upload it before publishing a release tag that fixed one of the Snatcher bugs described below.

Emulator Bugs: Sega CD

Here are two bugs that I ran into while adding Sega CD support to my Genesis emulator, both related to emulating the Sega CD’s CD-ROM hardware. These are from a while ago but I think they’re still interesting enough to write about.

Emulator Bugs: Metal Max 2 Kai

This is a post on a bug that broke Metal Max 2 Kai for the Game Boy Advance, a port of the Super Famicom game Metal Max 2. The text box is definitely not supposed to do that! This was caused by slightly inaccurate timing.

Game Boy Advance Audio

This is a moderately low-level overview of the Game Boy Advance audio hardware, from the perspective of having recently emulated it. GBA audio has a reputation for being very low-quality, one that I personally think is deserved, but this is not entirely caused by the audio hardware.

Emulator Bugs: Fatal Rewind

This is a post on a bug that broke Fatal Rewind for the Sega Genesis, a port of the Amiga/Atari ST game The Killing Game Show. I’m not sure why some Amiga-to-Genesis ports changed the game’s title. Leander is another one, which got ported to Genesis under the title Galahad.

Emulator Bugs: Game Boy Color HDMA

Rather than covering a single game, this is a topic post that covers six different bugs in my implementation of the Game Boy Color’s HDMA feature (HBlank direct memory access). Not every GBC game uses this feature, but a decent number do, and a few games will break pretty badly if it’s not emulated fairly accurately (moreso in terms of behavior than timing).