I used to use a CGA emulator (don't remember which one it was), that could show some gfx even in EGA/VGA-only games (when I selected EGA mode). I remember my frustration seeing some garbled graphics and wanting to fix the emulator, but I had no source code then. Obviously some level of emulation is/was possible.

1 Answer 1


There can not be an EGA emulator for many reasons.

Emulating CGA works, because in graphics mode, Hercules has a 64k frame buffer at address B0000h - BFFFFh, and for a single page, only 32k from address B0000h is displayed. The CGA has a 16k frame buffer at B8000h - BBFFFh, which fits inside the frame buffer provided by the Hercules card.

Therefore what the CGA emulator TSR has to do is to read the CGA area, and do it's best to convert large 4-bit color pixels into small 1-bit pixels by dithering, and write to the active Hercules area.

The EGA has it's graphics mode frame buffer in the A0000h-AFFFFh area, for which the Hercules card does not provide the memory, so that alone makes it impossible to emulate EGA with Hercules. And because Hercules card by default is in monochrome text mode and has no way of mapping to EGA/VGA addresses, it can actually co-exist in a system with a EGA or VGA card.

  • 2
    That exact combination was my setup for development those days. And for clearer graphics I used a monochrome VGA monitor; no games, just professional work. May 4, 2020 at 8:19
  • But I remember clearly the CGA emulator showing something remotely recognizable. I wanted an EGA, but didn't have the $$$. May 4, 2020 at 8:52
  • Are you saying the TSR would "follow behind" the application writes to CGA memory buffer, and clean up those writes to look like a dithered monochrome representation of the intended image? Is that the only way it could work?
    – Brian H
    May 4, 2020 at 17:24
  • @BrianH No. See retrocomputing.stackexchange.com/questions/6963/… - Hercules could be programmed to have the resolution and memory layout mostly compatible, with dithering being a side effect of the pixel layout. If you accept ugly empty lines, there is no speed penalty and almost no TSR needed (only to switch modes). May 4, 2020 at 17:28
  • 2
    A 386 protected mode driver operating like QEMM could do the emulation bypassing the memory range objection, couldn't it? Bit late for relevance, granted.
    – hobbs
    May 5, 2020 at 1:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.