Generator is an open source emulator designed to emulate the Sega Genesis / Mega Drive console, a popular games machine produced in the early 1990s. It is a portable program written in C and has been ported to the Amiga, Macintosh, Windows and even pocket PCs such as the iPAQ and Cassiopeia. Natively it compiles under unix for X Windows with either tcl/tk or gtk/SDL, for svgalib and even cross-compiles to DOS with djgpp/allegro.
Generator uses it's own custom 68000 processor emulation which is and uses compilation techniques such as block-marking, flag calculation removal, operand pre-calculation, endian pre-conversion etc. There are approximately 1600 C routines generated by the first stage of compilation to cope with the 67 instruction families. These include two versions of every instruction - one that calculates flags and one that doesn't, so that unnecessary flag computation is avoided.
Generator was first released in August 1998, although my first attempt at writing a Sega Genesis / Mega Drive emulator dates back to 1996!
Features
Main emulation
Unique portable 68000 emulator
Video support
Comprehensive emulation - all layers including window
All DMA modes including DMA processor suspension
Interlace mode - bob, weave, weave with vertical filtering
100%, 200%, Full-screen support (platform dependent)
H/V retrace video border emulation
Cell and raster based plotters
NTSC and PAL modes
Manual and automatic per-frame frame skip
Sound support
Programmable sound generator (PSG)
Frequency modulation (FM)
Z80 sound co-processor emulation
Component on/off support
Low-pass single-pole configurable filter
AVI output
Raw uncompressed 24-bit RGB bmp
JPEG compressed (configurable quality) 24-bit, so-called MJPEG
Configurable framerate (6-60fps)
Game Genie
Convert to and from encoded format
Genecyst load/save patch file support
Patch file manager
Sound logging
Genecyst GYM logging (without sample data)
Generator GNM logging (with sample data)
Multi player
Configurable keyboard controls
Split-screen interlaced support
Joystick support
Save-state
Extensible block-based file format
Supports different z80 cores